PHP 中怎样终止单个进程?

2017-01-13 10:09:50 +08:00
 alwayshere

目前因为要爬取大量数据, php 血统就是单线程的没办法,只能多弄几个进程来爬取数据,有时候一个进程会出错出现假死的情况,要停止我也只能把整个虚拟机停止了,这样也殃及了其它几个进程害得他们也被迫关闭,那么问题来了,我怎样把这个出错的 php 进程给关了,不伤害到其它 php 进程?

2162 次点击
所在节点    程序员
9 条回复
torbrowserbridge
2017-01-13 10:12:47 +08:00
不是 CLI 模式?为什么要停虚拟机?不懂。
iyaozhen
2017-01-13 10:48:28 +08:00
???虚拟机
多进程的话,你 ps 一下,看哪个运行时间超长了就 kill 掉呗。或者程序自己也可以处理呀,找到为什么假死才是正道
gouchaoer
2017-01-13 11:08:14 +08:00
不能再 php-fpm 里跑长期任务, ignore_user_abort 也不行, set_time_limit 也不行, memory_limit 还是不行,总之就是不行

用 php-cli
techmoe
2017-01-13 11:25:22 +08:00
cli 的话 ps 一下再 kill 一下不就行了
难道 lz 的爬虫是在 fpm 里跑的吗。。
xuxu
2017-01-13 11:27:26 +08:00
fork 子进程跑队列爬,直接跑那不找事吗?
alwayshere
2017-01-13 12:00:02 +08:00
@gouchaoer 为什么不行呢?我就是用 php-fpm 跑长期任务,挺好的啊?能解释一下原因么,谢谢
lbp0200
2017-01-13 12:08:01 +08:00
system("kill {$pid}");
asktao
2017-01-13 12:08:58 +08:00
拿到子进程 id kill 掉?
gouchaoer
2017-01-13 12:18:45 +08:00
@alwayshere 因为我始终没法解决 php-fpm 中的进程退出问题,别的还好,我也是不信邪的类型
基于 php 的任务队列处理,各框架也是专门针对 php-cli 应用做了路由和组件,这些也暗示了长期稳定任务的确要 php-cli

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX