PHP SOAP fread () dimensione POST dinamica
Domanda
Stai cercando di leggere la dimensione del file del POST DI SAPONE, qualche best practice?
$data = fopen('php://input','rb');
$content = fread($data,5000);
$dom = new DOMDocument();
$dom->loadXML($content);
Vorresti che il 5000 fosse dinamico poiché ogni dimensione di POST DI SAPONE sarà diversa o è importante?
L'uso di fread () sarebbe fantastico
Soluzione
Umm. Se riesci a leggerlo con ' fread
', non vedo alcun motivo per cui non puoi leggere lo stesso testo EXACT con ' file_get_contents ()
'. Lo uso alcune volte e ricordando che ho provato entrambi.
Per quanto riguarda la migliore pratica per ' fread
', ciò di cui hai bisogno è la dimensione del file che puoi ottenere da getallheaders ().
Quindi, se preferisci ancora usare ' fread
' ecco il codice.
$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength = $Headers['Content-Length'];
$content = fread($data,$CLength);
$dom = new DOMDocument();
$dom->loadXML($content);
Il codice sopra è autoesplicato, quindi non sono necessarie ulteriori spiegazioni. Nota solo che se la lunghezza è più lunga di 8192 byte il contenuto verrà ritagliato. Quindi è meglio controllare la lunghezza di lettura per vedere se è troncata. (Non dovrai preoccuparti se usi " file_get_contents ()
")
Spero che questo aiuti
Altri suggerimenti
Puoi invece provare quanto segue:
$xml = file_get_contents('php://input')
Verranno visualizzati tutti i contenuti, indipendentemente dalla lunghezza dei dati.