从网络服务 nusoap 接收 pdf 内容的奇怪行为



我创建了一个函数,该函数为pdf文件的内容调用Web服务。网络服务运行良好。

我想当文件太大时出现问题。

我可以在另一台服务器上解决同样的问题,该服务器在抛出memory_limit时出现相同的错误,他的 php 版本是 5.4。Nusoap版本是0.9.5,我正在通过作曲家的捆绑包使用它。

这个捆绑包来自https://packagist.org/packages/econea/nusoap,我使用的是 v0.9.6。

在我无法修复错误的服务器中,我使用 php 7.0。Nusoap版本也是此服务器中的0.9.5版本。

/**
* @param string $docId
* @return string
*/
public function getDocumentFromDocId(string $docId)
{
$client = new nusoap_client('http://'.$this->ip.'/arcdoc/WebServiceServer.php?wsdl', true);
$response = $client->call('GetDoc', array(
'xxxx1' => 'xxxxxx',
'xxxx2' => base64_encode('xxxxx'),
'xxxx3' => base64_encode("yyyyyyy"),
'xxxx4' => base64_encode($docId)
));
var_dump($response);
return $response;
}

当我var_dump()内容响应时,此响应:

/var/www/html/project/src/AppBundle/Service/whatever.php:55:boolean false

如果文件大于 6-8M 将是假的,则$response但如果文件小于 6-8M 不是问题。

因此,我可以说Web服务在小于6-8M的文件中运行良好。

知道为什么我没有得到答案吗?

我正在测试将相同的 pdf 从9M减少到6M并且效果很好,所以它一定与文件的大小有关。就我而言,似乎开始在7-9M工作不佳.

我不确定,但它可能与PHP中允许的内存大小有关。只需尝试增加并测试它。您可以从php.ini.htaccess(不建议(对其进行编辑。

php.ini示例:

memory_limit = 256M

.htaccess示例:

php_value memory_limit 256M

附言您可以更改256所需的任何内存。

$paramWSDLS = array(
'soap_version' => SOAP_1_1,
'encoding' => 'ISO-8859-15',
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => false,
'trace' => true,
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL
);
$wsclient = new SoapClient('http://'.$this->ip.'/arcdoc/WebServiceServer.php?wsdl', $paramWSDLS );
$parametros = array(
'xxxx' => 'xxxxxx',
'xxxx2' => base64_encode('xxxxx2'),
'xxxx3' => utf8_decode('xxxxx3'),
'xxxx4' => utf8_decode('xxxxx4'),
'showMask' => false
);
$response = $wsclient->__soapCall('GetDoc', $parametros );

不知道为什么,但使用此 SoapClient 解决了这个问题。

最新更新