Tôi đã phát triển một số mã sử dụng các lớp NuSoap cho PHP để gọi một dịch vụ web xà phòng. Tôi đang sử dụng NuSoap chứ không phải là các lớp gốc PHP 5 chủ yếu bởi vì tôi không muốn thêm một điều kiện tiên quyết bổ sung khi mã này được cài đặt trên một máy chủ web được chia sẻ. Mã hoạt động tốt trên máy của tôi:Sử dụng NuSoap hoạt động trên máy cục bộ nhưng không phải máy chủ
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);
Khi tôi đặt máy chủ này lên máy chủ ảo thay vì chạy cục bộ, dòng cuối cùng bị treo trong khoảng 10 giây sau đó PHP bị loại ra. Không có ngoại lệ được nêu ra và không có lỗi PHP (tôi đã thử bằng cách sử dụng try..catch và set_error_handler chỉ để chắc chắn). Phản ứng đầu tiên của tôi là đây có thể là tường lửa đang chạy trên máy chủ chặn các yêu cầu gửi đi, nhưng tôi đang sử dụng thành công cUrl ở nơi khác để yêu cầu và tôi chắc chắn không có tường lửa nào đang chạy tại đây. Gọi $ client-> use_curl không tạo ra bất kỳ sự khác biệt nào với cuộc gọi NuSoap, nó vẫn không hoạt động.
Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra sẽ được nhiều người đánh giá cao.
Nhiều khả năng cài đặt memory_limit khác nhau trên máy chủ cục bộ và máy chủ và máy chủ xả bộ nhớ. –
Cảm ơn bạn đã đề xuất. Tôi đã tăng giới hạn bộ nhớ lên 96M, nhưng điều này chỉ làm việc nếu tôi cũng được gọi là $ client-> setGlobalDebugLevel (0). 64M là không đủ ngay cả khi gỡ lỗi được tắt. Tôi vừa kiểm tra và dịch vụ web đang phản hồi với ~ 2MB dữ liệu. Có vẻ kỳ quặc là việc sử dụng bộ nhớ quá cao trong trường hợp này. – Johnvb
Tôi cũng đang gặp phải sự cố tương tự. Tôi có một phản ứng dữ liệu 5mb từ một dịch vụ web mà nuSOAP muốn chiếm hơn 256MB bộ nhớ để xử lý. – Travis