私は巨大なPHPアプリケーションをたくさん使っています。 通常、それらのすべてが10秒以内に私にデータを送信しますが、時には私は応答せず、すべてのプロセスを凍結する人がいます。PHP non-blocking soap client
私の質問はどのように定義された時間の後に応答しない場合、すべてのシステムをフリーズせずにPHPでsoap webserviceを使用することができますか?
私は巨大なPHPアプリケーションをたくさん使っています。 通常、それらのすべてが10秒以内に私にデータを送信しますが、時には私は応答せず、すべてのプロセスを凍結する人がいます。PHP non-blocking soap client
私の質問はどのように定義された時間の後に応答しない場合、すべてのシステムをフリーズせずにPHPでsoap webserviceを使用することができますか?
PHPはマルチスレッドと非同期プログラミングをサポートしていません。しかし、fork
このSOAPリクエストを実行する別のプロセスができます。もちろん、この新しいプロセスから一部のデータをクライアントに送信することはできませんが、たとえば、その応答をDBに書き込む。
stream_set_blockingを使用すると、http/httpsストリームを非ブロッキングモードに設定できます。
解決策はマルチスレッド化と関係がありませんpenartur。唯一行うべきことは、非ブロックストリームを使用するI/O多重化を使用し、nutrijaが示唆するようにselect()関数を使用することです。すでに実装されているソリューションの1つがこのリンクにあります:Making PHP’s SOAP client asynchronous
PHPでフォークするのは、コマンドラインからスクリプトを呼び出すことによって達成されます。 – dmp
SOAPリクエストを作成するために別のテクノロジを使用するのは唯一の解決策です。 – Awea
ちょうどこの質問を非常に便利な非同期石鹸ラッパーライブラリでバンプしたいと思っています:http://en.dklab.ru/lib/Dklab_SoapClient/ – bonez