我使用了大量的webservices一個巨大的php應用程序。 通常他們都會在十秒鐘或更短的時間內向我發送數據,但有時我會找到一個不響應並凍結所有進程的人。Php非阻塞soap客戶端
所以我的問題是如何在不凍結所有系統的情況下在php中使用soap web服務,如果它沒有在定義的時間之後響應。
我使用了大量的webservices一個巨大的php應用程序。 通常他們都會在十秒鐘或更短的時間內向我發送數據,但有時我會找到一個不響應並凍結所有進程的人。Php非阻塞soap客戶端
所以我的問題是如何在不凍結所有系統的情況下在php中使用soap web服務,如果它沒有在定義的時間之後響應。
PHP不支持多線程和異步編程。但是,您可以使用另一個將執行此SOAP請求的進程;當然,您將無法通過這個新流程向客戶端發送一些數據,但您可以將其響應寫入數據庫。
您可以使用stream_set_blocking將http/https流設置爲非阻塞模式。
該解決方案並不一定與多線程penartur有關。唯一要做的就是使用非阻塞流的I/O複用,並使用select()函數作爲nutrija建議。一個已經實施的解決方案可能在這個鏈接中找到:Making PHP’s SOAP client asynchronous
只想說在php中分叉是通過命令行調用腳本實現的! – dmp 2012-04-19 12:41:21
那麼我唯一的解決方案就是使用其他技術來完成我的SOAP請求? – Awea 2012-04-19 13:14:04
只是想用一個非常有用的異步肥皂包裝庫碰到這個問題:http://en.dklab.ru/lib/Dklab_SoapClient/ – bonez 2012-09-05 16:13:51