这篇文章主要介绍了swoole常驻进程的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
后端经常会有类似这样的场景,某个脚本,需要不断的重复运行,这个时候,最好有一个守护程序,帮助我们不断地自动地拉起这些脚本进程,让它自动地重复运行。
swoole的进程管理模块就提供了进程间通信的功能,可以实现对子进程的自动重启功能。<强>在swoole中我们可以通过进程守护实现常驻进程。强>
要实现对子程序的守护,需要做到两点:
1,程序需要监听到子进程的结束信号,以便于重新拉起新的子进程。
2,子进程的运行环境需要独立于父进程。
swoole进程管理模块提供了一个bool过程→exec (string execfile美元,数组$ args)方法,让子进程蜕变成另一个系统调用程序,同时还能保证父进程与当前进程仍然是父子进程关系。
再通过数组过程::等待(bool阻止美元=true)方法,来等待子进程的退出信号。
下面是使用swoole启动子进程,并回收子进程资源的示例代码:
& lt; ? phpuse swoole \过程; 时间=美元php “/usr/bin/env php"; $ script =,目录名(__DIR__),只“/task.php"; $ command =,“{$ php},{$脚本}“; process 美元;=,new 过程(function (process 工人美元),use (命令),{ ,,,工人→美元exec (& # 39;/bin/sh # 39;,, (& # 39; - c # 39;,, $命令]); }); 美元$ pid =,过程→开始(); printf(“启动子进程,{$ pid} \ n"); while ($ ret =,过程::wait ()), { ,,,pid 美元;=,intval中(ret [“pid"],美元? ?,0); ,,,printf(“子进程,{$ pid},结束\ n"); }
代码解析:
命令美元变量表示需要子进程脚本,通过exec()方法来启动成一个子进程的方式运行,再通过过程::等待()访求来等待命令美元这个子进程脚本结束,并回收进程资源。
那么,只要在收到子进程的结束信号后,再起一个相同的子进程脚本,即可实现对子进程的守护了。于是,第一个守护子进程的程序实现代码:
& lt; php ? use Swoole \过程; 时间=美元php “/usr/bin/env php"; $ script =,目录名(__DIR__),只“/task.php"; $ command =,“{$ php},{$脚本}“; do { ,,,process 美元;=,new 过程(function (process 工人美元),use (命令),{ ,,,,,,,工人→美元exec (& # 39;/bin/sh # 39;,, (& # 39; - c # 39;,, $命令]); ,,,}); ,,,pid 美元;=,过程→美元开始(); ,,,printf(“启动子进程,{$ pid} \ n"); },while (过程::wait ());
代码解析:
这段代码只将启动子进程的逻辑加到一个死循环中,好让这个子进程脚本能够不断的重启。
感谢你能够认真阅读完这篇文章,希望小编分享swoole常驻进程的方法内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!