PHP SOAP fread()動的POSTサイズ
質問
SOAP POSTのファイルサイズを確認したい、ベストプラクティスはありますか?
$data = fopen('php://input','rb');
$content = fread($data,5000);
$dom = new DOMDocument();
$dom->loadXML($content);
各SOAP POSTサイズが異なるため、5000を動的にしたいですか、これは重要ですか?
fread()を使用すると便利です
解決
うーん。 「 fread
」で読むことができる場合、「 file_get_contents()
」で正確に同じテキストを読むことができない理由はありません。これを数回使用し、両方試してみたことを覚えています。
「 fread
」のベストプラクティスに関する限り、必要なのはgetallheaders()から取得できるファイルサイズです。
したがって、「 fread
」の使用を引き続き希望する場合は、ここにコードがあります。
$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength = $Headers['Content-Length'];
$content = fread($data,$CLength);
$dom = new DOMDocument();
$dom->loadXML($content);
上記のコードは自明であるため、さらに説明する必要はありません。長さが 8192バイトより長い場合コンテンツはクリップされます。そのため、読み取りの長さをチェックして、クリップされているかどうかを確認することをお勧めします。 (ただし、「 file_get_contents()
」を使用しても心配する必要はありません)。
これが役立つことを願って
他のヒント
代わりに次を試すことができます:
$xml = file_get_contents('php://input')
これにより、データの長さに関係なく、すべてのコンテンツが取得されます。
所属していません StackOverflow