首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
task中使用 ::exec 执行一个90s的外部程序 ,在67s就异常退出了,怎样延长超时时间 PHP8.2.6+5.0.3 谢谢!
### 问题描述 如题,需要在task中执行一个 exec 外部程序,外部程序完成时间不定,最长可能120S。但在swoole下最多只能执行67s就返回了空值,想问下如何调整加长执行时间 ### Swoole版本,PHP版本,以及操作系统版本信息 centos7.9 PHP8.2.6+swoole 5.0.3,内存256G ### 相关代码 ```php $serv->set([ 'worker_num' => swoole_cpu_num()*2, 'max_request' => 4000, 'enable_static_handler' => true, 'enable_coroutine' => true, 'task_enable_coroutine'=> true, 'task_use_object' => true, 'task_worker_num' => swoole_cpu_num()*2, ' 'hook_flags'=> SWOOLE_HOOK_ALL ]); public function onTask($serv, $task) { $asr_output_arr = Co::exec("/home/bin/onnx --quantize true --wav-path /home/test.mp3",true); var_dump($asr_output_arr); // 这个exec 时间可能最长120s,目前只能执行最多67s就失败了, // 若exec 在60s内完成,还是可以正常返回结果的,但超过67s就不能执行一次退出了 请问如何设置能加长超时时间 } ``` 直接用 php xx.php 是可以正常返回结果的。 ```php <?php $asr_output_arr = exec("/home/bin/onnx --quantize true --wav-path /home/test.mp3"); var_dump($asr_output_arr); ?> ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 需要正常等待exec返回结果,而不是67s左右就退出了。
发布于1年前 · 21 次浏览 · 来自
提问
aimdy
### 问题描述 如题,需要在task中执行一个 exec 外部程序,外部程序完成时间不定,最长可能120S。但在swoole下最多只能执行67s就返回了空值,想问下如何调整加长执行时间 ### Swoole版本,PHP版本,以及操作系统版本信息 centos7.9 PHP8.2.6+swoole 5.0.3,内存256G ### 相关代码 ```php $serv->set([ 'worker_num' => swoole_cpu_num()*2, 'max_request' => 4000, 'enable_static_handler' => true, 'enable_coroutine' => true, 'task_enable_coroutine'=> true, 'task_use_object' => true, 'task_worker_num' => swoole_cpu_num()*2, ' 'hook_flags'=> SWOOLE_HOOK_ALL ]); public function onTask($serv, $task) { $asr_output_arr = Co::exec("/home/bin/onnx --quantize true --wav-path /home/test.mp3",true); var_dump($asr_output_arr); // 这个exec 时间可能最长120s,目前只能执行最多67s就失败了, // 若exec 在60s内完成,还是可以正常返回结果的,但超过67s就不能执行一次退出了 请问如何设置能加长超时时间 } ``` 直接用 php xx.php 是可以正常返回结果的。 ```php <?php $asr_output_arr = exec("/home/bin/onnx --quantize true --wav-path /home/test.mp3"); var_dump($asr_output_arr); ?> ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 需要正常等待exec返回结果,而不是67s左右就退出了。
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2023-06-03
aimdy
感谢开发大佬,在github回复。 设置 'socket_read_timeout' => 150,解决
赞
0
回复
2023-06-07
Rango
长时间运行的程序,可以使用 `proc_open`。`Co::exec`和`shell_exec` 要挂起当前协程,等待子进程退出,执行时间过长会导致读管道超时。
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。