资讯专栏INFORMATION COLUMN

【PHP】一种实现多进程的方式

3fuyu / 1495人阅读

摘要:多进程语言可以很容易的实现多进程,对于,有没有比较简单的方法去实现这里有一种巧妙的方式,来实现多进程。这样会导致进程重启进程时,发现有锁文件,就不会继续启动进程。解决办法在进程中自动删除昨天的锁文件

多进程

GO 语言可以很容易的实现多进程,对于 PHP,有没有比较简单的方法去实现?

这里有一种巧妙的方式,来实现多进程。

但是需要注意一下 内存CPU 的使用情况

场景:消息PUSH

假设 PUSH 有多种类型,比如针对用户的,针对游戏的,针对全局的。

我们使用 PHP 脚本去执行下发操作,长连接 PUSH 服务使用第三方系统提供的 API 来支持。

PHP 脚本是顺序执行的,假设配置了 NPUSH,后续的 PUSH 就要等前面的 PUSH 执行完毕,才能继续。

比如,第一条 PUSH 是处于 While(true) 之类的循环状态中,下发时间范围为一整天;那么其他的 PUSH 就只

能干等着,无法及时执行 PUSH 操作,从而耽误了业务。

方案Deamon 进程 和 Act 进程

1、Deamon 进程:配置 crontab

* * * * *  flock -xn /tmp/push_deamon.lock -c "/usr/local/php/bin/php push_deamon.php >> /tmp/push_error.log 2>&1"

2、Act 进程:在 push_deamon.php 中,针对不同 push_id,启动以下脚本。

$command = flock -xn /tmp/push_act_{$push_id}.lock -c "nohup /usr/local/php/bin/php -f push_act.php $push_id >> /tmp/push_error.log 2>&1 &"
exec($command);

问题Act 进程被手动 Kill

有些 PUSH 是每天执行一次的,如果对应的 Act 进程被杀死。

那么对应的锁文件 push_act_{$push_id}.lock,就没有被清理。

这样会导致 Deamon 进程重启 Act 进程时,发现有锁文件,就不会继续启动 Act 进程。

解决办法:在 Deamon 进程中自动删除昨天的锁文件

$command = "find /tmp/ -daystart -mtime 1 -type f -name push_act_{$id}.lock -exec rm -f {} ; >> /tmp/push_error.log 2>&1 &";
exec($command);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22949.html

相关文章

  • PHP回顾之进程编程

    摘要:多进程中与多进程相关的两个重要拓展是和。函数执行期间,主进程除了等待无法处理其他任务,所以一般不认为这是多进程编程。回收子进程有两种方式,一种是主进程调用函数等待子进程结束另外一种是处理信号。 转载请注明文章出处: https://tlanyan.me/php-review... PHP回顾系列目录 PHP基础 web请求 cookie web响应 session 数据库操作 加解...

    lifesimple 评论0 收藏0
  • PHP并发IO编程之路

    摘要:下文如无特殊声明将使用进程同时表示进程线程。收到数据后服务器程序进行处理然后使用向客户端发送响应。现在各种高并发异步的服务器程序都是基于实现的,比如。 并发 IO 问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接 Fork 进程,到 Worker 进程池/线程池,到现在的异步IO、协程。PHP 程序员因为有强大的 LAMP 框架,对这类底层方面的知识知之甚少,本文目的就是详细介...

    Riddler 评论0 收藏0
  • PHP进程初探 --- 信号

    摘要:第一次子进程正在休眠中,父进程依旧在循环中。第三次此时父进程已经执行了,将已经退出的子进程回收,释放了等资源。梳理一下流程,子进程向父进程发送信号是对人们来说是透明的,也就是说我们无须关心。 [原文地址:https://blog.ti-node.com/blog...] 上一篇尬聊了通篇的pcntl_wait()和pcntl_waitpid(),就是为了解决僵尸进程的问题,但最后看起来...

    Prasanta 评论0 收藏0

发表评论

0条评论

3fuyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<