2012-04-19 148 views
0

我使用了大量的webservices一個巨大的php應用程序。 通常他們都會在十秒鐘或更短的時間內向我發送數據,但有時我會找到一個不響應並凍結所有進程的人。Php非阻塞soap客戶端

所以我的問題是如何在不凍結所有系統的情況下在php中使用soap web服務,如果它沒有在定義的時間之後響應。

回答

3

PHP不支持多線程和異步編程。但是,您可以使用另一個將執行此SOAP請求的進程;當然,您將無法通過這個新流程向客戶端發送一些數據,但您可以將其響應寫入數據庫。

+0

只想說在php中分叉是通過命令行調用腳本實現的! – dmp 2012-04-19 12:41:21

+0

那麼我唯一的解決方案就是使用其他技術來完成我的SOAP請求? – Awea 2012-04-19 13:14:04

+0

只是想用一個非常有用的異步肥皂包裝庫碰到這個問題:http://en.dklab.ru/lib/Dklab_SoapClient/ – bonez 2012-09-05 16:13:51

0

您可以使用JavaScript對另一個將發出SOAP請求的PHP文件進行AJAX調用。

+0

我已經使用這樣的東西,我通過一個Ajax的PHP腳本調用5個不同的webservices查詢,但是如果其中一個不響應腳本繼續運行,我永遠不會獲得任何結果:( – Awea 2012-04-19 13:15:41

+0

使用AJAX調用的php腳本使用$ _SESSION數據嗎? – lugte098 2012-04-19 14:00:32

+1

嘗試將session_write_close()放在您的開頭用AJAX調用的php腳本 – lugte098 2012-05-07 11:10:56