我开发了一些代码,它使用PHP的NuSoap类来调用soap web服务。我使用NuSoap而不是PHP 5本地类,主要是因为我不想在共享Web服务器上安装此代码时添加额外的先决条件。该代码工作正常,我的机器上:使用NuSoap在本地机器上工作,但不在服务器上
require DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php';
$client = new nusoap_client('http://www.nbnws.net/ws_3_5/GatewayWebService?wsdl', true);
$query1 = '<TaxonReportingCategoryListRequest xmlns="http://www.nbnws.net/TaxonReportingCategory" registrationKey="'.$key.'"></TaxonReportingCategoryListRequest>';
$response = $client->call('GetTaxonReportingCategoryList', $query1);
当我把这个建立一个虚拟服务器上,而不是在本地运行它,最后一行只是挂起约10秒钟,然后PHP炸弹了。没有异常提出,并没有PHP错误(我尝试使用try..catch和set_error_handler只是为了确保)。
我的第一反应是,这可能是服务器上运行的防火墙阻止传出的请求,但我成功地在其他地方使用cUrl请求,我很确定没有防火墙在这里运行。调用$ client-> use_curl虽然对NuSoap调用没有任何影响,但它仍然不起作用。
任何想法,为什么这可能会发生将不胜感激。
最有可能的memory_limit设置在本地主机和服务器上不同,并且服务器耗尽内存。 –
感谢您的建议。我已经将内存限制提高到了96M,但是这只有在我还调用$ client-> setGlobalDebugLevel(0)时才有效。即使调试关闭,64M也不够。我刚刚检查过,Web服务正在响应~2MB的数据。在这种情况下,内存使用率如此之高似乎很奇怪。 – Johnvb
我也遇到类似的问题。我有一个web服务的5MB数据响应,nuSOAP想占用超过256mb的内存来处理。 – Travis