代码之家  ›  专栏  ›  技术社区  ›  Ricard Espinàs Llovet

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

  •  8
  • Ricard Espinàs Llovet  · 技术社区  · 6 年前

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

    我想当文件太大的时候问题就来了。

    https://packagist.org/packages/econea/nusoap 我用的是v0.9.6。

    /**
     * @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-8米就不是问题。

    所以,我可以说webservice在小于6-8米的文件中工作得很好。

    我正在测试从 9M 6M 而且效果很好,所以一定和文件大小差不多。在我的情况下,似乎开始工作不好 7-9M .

    2 回复  |  直到 6 年前
        1
  •  0
  •   Sanan Guliyev    6 年前

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

    php.ini文件 例子:

    memory_limit = 256M
    

    .htaccess访问 例子:

    php_value memory_limit 256M
    

    另外,你可以改变 256

        2
  •  0
  •   Ricard Espinàs Llovet    6 年前
    $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解决了这个问题。

    推荐文章