PHP触发耗时脚本
ringa_lee
ringa_lee 2017-04-10 16:59:46
[PHP讨论组]

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

(必须在服务器端)

ringa_lee
ringa_lee

ringa_lee

全部回复(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

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

PHP中文网

php异步 推荐workerman
http://doc3.workerman.net/faq/async-task.html

Swoole性能比workerman高点 因为是纯c扩展的缘故

但同样workerman比Swoole安装要方便很多

高洛峰

用ajax异步。

PHPz

Swoole

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号