2011-10-11 13 views
9

çalışır. Bu kod, paylaşılan bir web sunucusuna yüklendiğinde ekstra bir önkoşul eklemek istemediğimden, temel olarak PHP 5 yerel sınıfları yerine NuSoap kullanıyorum. Kod benim makine üzerinde çalışıyor:Bir sabun web hizmeti çağırmak PHP NuSOAP sınıflarını kullanan bazı kod geliştirdik yerel makine değil sunucuda

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); 

Ben sanal bir sunucu üzerinde bu koymak yerine yerel olarak çalışan, son satırı tam o sırada PHP bombalar dışarı yaklaşık 10 saniye boyunca asılı zaman. Hiçbir istisna yükseltilir ve PHP hatası yoktur (emin olmak için try..catch ve set_error_handler kullanarak denedim).

ilk tepkim bu giden istekleri engelliyor sunucuda çalışan bir firewall olabileceğini, ama başarılı istekleri için başka yerde kıvrılıp kullanıyorum ve burada çalışan hiçbir güvenlik duvarı yoktur eminim. $ Client-> use_curl çağrısı, NuSoap çağrısında fark yaratmıyor, yine de çalışmıyor.

bu çok takdir gelişiyor olabilir neden herhangi bir fikir.

+0

Büyük olasılıkla memory_limit ayarı hafızası localhost ve sunucu ve sunucu egzoz üzerinde farklıdır. –

+0

Öneriniz için teşekkürler. Bellek sınırını 96M'ye yükselttim, ancak bu sadece $ client-> setGlobalDebugLevel (0) diye de adlandırdığımda işe yaradı. Hata ayıklama kapalıyken bile 64M yeterli değildi. Sadece kontrol ettim ve web hizmeti ~ 2MB veri ile yanıt veriyor. Bu durumda bellek kullanımının çok yüksek olması garip görünüyor. – Johnvb

+0

Benzer şekilde benzer bir sorunu yaşıyorum. Bir web servisten 5mb veri yanıtım var, nuSOAP'ın işlemek için 256MB'den fazla bellek almak istediği. – Travis

cevap

0

www-data

DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php' ? 

için (iznine) erişimi olan Veya başka bir dizine NuSOAP kopyalamayı deneyin emin olun miyim?

Yoksa kök kullanıcı olarak komut isteminden çalıştırmak için deneyebilirsiniz? Bu arada

, hata/uyarı ne tür alıyoruz? Eğer sorun giderme fikirler bitti ve Linux üzerinde çalışan varsayarak ise

2

, sen strace kullanarak sistem çağrıları izleyebilirsiniz. Aramalar oldukça şifreli görünebilir, ancak bazen hangi sistemin askıda kaldığını görebilir, daha sonra Google daha fazla bilgi gerektirir.

strace -p processid 

Yoksa bir çıkış dosyasına bitirmek ve dökümü yürütme başından itibaren senaryoyu takip etmek istiyorsanız:

strace -o trace.txt myscript.php 

Here is a good strace tutorial.

İlgili konular