PHP SOAP fread () dynamique POST taille
Question
Vous souhaitez lire la taille du fichier SOAP POST, quelles sont les meilleures pratiques?
$data = fopen('php://input','rb');
$content = fread($data,5000);
$dom = new DOMDocument();
$dom->loadXML($content);
Voudriez-vous que le 5000 soit dynamique car chaque taille de SOAP POST sera différente ou est-ce important?
Utiliser fread () serait génial
La solution
Umm. Si vous pouvez le lire avec ' fread
', je ne vois aucune raison pour que vous ne puissiez pas lire EXACT le même texte avec ' file_get_contents ()
'. Je l’utilise plusieurs fois et je me rappelle que j’ai essayé les deux.
Pour ce qui est de la meilleure pratique pour ' fread
", vous avez besoin de la taille du fichier que vous pouvez obtenir de getallheaders ().
Donc, si vous préférez toujours utiliser ' fread
', voici le code.
$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength = $Headers['Content-Length'];
$content = fread($data,$CLength);
$dom = new DOMDocument();
$dom->loadXML($content);
Le code ci-dessus est auto-explicité, vous n'avez donc pas besoin d'explications supplémentaires. Juste un petit peu noter que si la longueur est plus de 8192 octets le contenu sera coupé. Vous feriez donc mieux de vérifier la longueur de lecture pour voir si elle est coupée. (Vous n'aurez pas à vous inquiéter si vous utilisez ' file_get_contents ()
' cependant).
J'espère que cela vous aidera
Autres conseils
Vous pouvez plutôt essayer ce qui suit:
$xml = file_get_contents('php://input')
Ceci obtiendra tout le contenu, quelle que soit la longueur des données.