PHP SOAP fread()动态POST大小

时间:2009-09-10 13:59:58

标签: php soap post size fread

想要阅读SOAP POST的文件大小,是否有任何最佳实践?

$data = fopen('php://input','rb');
$content = fread($data,5000);

$dom = new DOMDocument();
$dom->loadXML($content);

希望5000是动态的,因为每个SOAP POST大小都不同或者这有关系吗?

使用fread()会很棒

2 个答案:

答案 0 :(得分:2)

您可以尝试以下方式:

$xml = file_get_contents('php://input')

无论数据的长度如何,这都将获得所有内容。

答案 1 :(得分:2)

嗯。如果您可以使用“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);

上面的代码是自我解释的,因此无需进一步解释。稍微注意一下,如果长度为longer than 8192 bytes,则内容将被剪裁。因此,您最好检查读取长度以查看它是否被剪裁。 (如果您使用'file_get_contents()',则无需担心。

希望这有帮助