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

时间:2018-09-19 13:27:00

标签: php web-services pdf nusoap

我创建了一个函数,该函数调用pdf文件内容的Web服务。 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上开始无法正常工作。

2 个答案:

答案 0 :(得分:0)

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

php.ini示例:

memory_limit = 256M

.htaccess示例:

php_value memory_limit 256M

P.S。您可以根据需要更改256

答案 1 :(得分:0)

$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解决了这个问题。