質問

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')

これにより、データの長さに関係なく、すべてのコンテンツが取得されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top