PHP触发耗时脚本

在一个php脚本中触发另一个耗时很长的php脚本,不想等待,怎么做?curl去触发需要加个超时,如果超时设置短了失败率很高(网络不稳),长了也很耗时,只是相对时间少一点,fsockopen去触发需要加个延时(sleep(*)),都要留时间给网络传输数据,不是特别好,有其他解决方法吗?

(必须在服务器端)

阅读 4.7k
4 个回答

用fsockopen fwrite()后 加上usleep(1000) 就可以了,目前稳定。

问题移步https://segmentfault.com/q/1010000004590173?_ea=660163

另外关于PHP超时处理要注意:

下面例子是设置数据传输时的超时,不是整个连接的超时。 如果跟我一样问题的想用当前脚本触发另一个耗时很长的php脚本不要用这种方式,这样设置是无效的。这样的设置是代表当前脚本 等待耗时长的另外一个脚本执行完成后返回数据,传输数据时不能超过一秒,不是说连接超过一秒就断开。

$opts = array(
      'http'=>array(
        'timeout'=>1, // 设置超时一秒,此处是大坑。
      )
);
$context = stream_context_create($opts);
file_get_contents('http://www.url.com/', false, $context);

如果用CURL
设置超时

curl_setopt($ch, CURLOPT_TIMEOUT, 1); // 超时秒

curl_setopt($ch,CURLOPT_NOSIGNAL, 1); //设置毫秒时必加
curl_setopt($ch,CURLOPT_TIMEOUT_MS, 1000); //超时毫秒
// 注意:这个超时设置是代表整个连接的超时设置。不管有没连接上,有没传输数据,到时间了就断开,返回false

--- 云网开 用手机建网站

用ajax异步。

新手上路,请多包涵

Swoole

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题