问题
由于具体业务功能需要,需要采用并行异步的方式调用方法。
但是业务上要求每个被调用的方法的执行时间最多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));
在这里配置第五个参数,设置YAR_OPT_TIMEOUT
.
我在这里遇到的问题是,callback函数一直找不到,所以采用的是第一个方法。