【Yar】Yar非同期呼び出しのタイムアウト時間の問題と解決策


に質問
特定のビジネス機能の必要性のため、パラレル非同期方式でメソッドを呼び出す必要があります.
しかし、業務上、呼び出すメソッド毎の実行時間は最大60秒と要求され、これにより、Yarを用いた呼び出しは常にtimeoutとなる.
Yar_Concurrent_Client::loop(): select timeout 5000ms reached
ソリューション
1.プロファイルの変更
Yar拡張の構成項目は次のとおりです.
  • yar.packager php
  • yar.debug
  • yar.connect_timeout
  • yar.timeout
  • yar.expose_info

  • したがって、ini_set()の方法でphpを実現する.iniの動的修正は、yar.timeoutの修正を実現し、タイムアウト時間の構成問題を完了する.
    ini_set("yar.timeout",60000);

    2.メソッドパラメータの設定
    実際にこの方法は事例コードに存在する.
    Yar_Concurrent_Client::call(“http://host/api/“, “some_method”, array(“parameters”), “callback”, NULL, array(YAR_OPT_TIMEOUT=>1));
    ここで5番目のパラメータを配置する、YAR_OPT_TIMEOUTを設定する.
    私がここで出会った問題はcallback関数がずっと見つからないので、最初の方法を採用しています.
    資料を参観する.
  • http://php.net/manual/zh/yar-concurrent-client.call.php
  • http://www.laruence.com/2012/09/15/2779.html
  • Laruence本人