我開發了一些代碼,它使用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