首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
关于swoole_process的一些使用疑惑
先说下我准备使用的场景吧。场景是我想并发的请求20个接口,可能会更多,php默认是没有多线程的。curl_multi_init太繁琐了,我想使用swoole_process这个来解决是否可以,贴下代码 foreach($list as $id) { global $id; $process = new swoole_process('callback_function', $redirect_stdout=true); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { global $id; $worker->exec('/usr/bin/curl',array("http://www.baidu.com")); $worker->exit(0); } 我在回到函数中等待worker执行完毕立马exit(),这样的话是否进程pid会被kill掉么,然后使用crontab执行脚本的话,不会产生僵尸进程吧。如果我吧$redirect_stout设置为false的话,我想获取执行的结果,是通过swoole_process的pipe获得结果么?菜鸟疑惑,求大神指点!
发布于9年前 · 2 次浏览 · 来自
提问
w
wolfehrua
先说下我准备使用的场景吧。场景是我想并发的请求20个接口,可能会更多,php默认是没有多线程的。curl_multi_init太繁琐了,我想使用swoole_process这个来解决是否可以,贴下代码 foreach($list as $id) { global $id; $process = new swoole_process('callback_function', $redirect_stdout=true); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { global $id; $worker->exec('/usr/bin/curl',array("http://www.baidu.com")); $worker->exit(0); } 我在回到函数中等待worker执行完毕立马exit(),这样的话是否进程pid会被kill掉么,然后使用crontab执行脚本的话,不会产生僵尸进程吧。如果我吧$redirect_stout设置为false的话,我想获取执行的结果,是通过swoole_process的pipe获得结果么?菜鸟疑惑,求大神指点!
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2017-05-26
上
上衣治胃病
你的程序有问题,首先`swoole_process->exec`实际上和PHP的`shell_exec`等函数是相同的,都是加载另外一个可执行程序。所以你这样写就需要不断创建销毁进程,这个消耗是很大的。 正确的做法是,创建20个swoole_process子进程。然后子进程循环读取管道,接收master发来的指令,Master进程可以发URL过来,子进程去请求URL结果再写入管道,master进程就能读到。 伪代码如下: ```php for($i=0; $i< 20; $i++) {
赞
0
回复
2017-05-26
我
我的眼睦仅为你留温存
`swoole_process`在最新的1.8.0版本已经禁止在Web环境中使用了,所以也只能支持命令行。其实multi-curl是不错的选择,你可以在网上找一下封装好的类。
赞
0
回复
2019-07-18
疯
疯心卟封爱
mark
赞
0
回复