PHP后台守护进程的实现方式(Linux环境)

PHP后台守护进程的实现方式(Linux环境)

ID:40490031

大小:28.28 KB

页数:4页

时间:2019-08-03

PHP后台守护进程的实现方式(Linux环境)_第1页
PHP后台守护进程的实现方式(Linux环境)_第2页
PHP后台守护进程的实现方式(Linux环境)_第3页
PHP后台守护进程的实现方式(Linux环境)_第4页
资源描述:

《PHP后台守护进程的实现方式(Linux环境)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、应用场景某些情况下,我们需要持续的周期性的提供一些服务,比如监控内存或cpu的运行状况,这些应用与客户端是没有关系的,不是说客户端(如web界面,手机app等)关闭了,我们就不监控内存或cpu了,为了应对这种业务场景,后台守护进程就可以派上用场了。所需环境Linux实现方式1.准备PHP脚本在/usr/local/src/目录下,新建一个daemon.php脚本文件,内如如下:[php] viewplain copy1.

2、     * 初始化一个守护进程 7.     * @throws Exception 8.     */  9.    public function init(){  10.        //创建一个子进程  11.        $pid = pcntl_fork();  12.          13.        if ($pid == -1) {  14.            throw new Exception('fork子进程失败');  15.        } elseif ($pid 

3、> 0) {  16.            //父进程退出,子进程变成孤儿进程被1号进程收养,进程脱离终端  17.            exit(0);  18.        }  19.          20.        //创建一个新的会话,脱离终端控制,更改子进程为组长进程  21.        $sid = posix_setsid();  22.        if ($sid == -1) {  23.            throw new Exception('setsid fai

4、l');  24.        }  1.          2.        //修改当前进程的工作目录,由于子进程会继承父进程的工作目录,修改工作目录以释放对父进程工作目录的占用。  3.        chdir('/');  4.          5.        /** 6.         * 通过上一步,我们创建了一个新的会话组长,进程组长,且脱离了终端,但是会话组长可以申请重新打开一个终端,为了避免 7.         * 这种情况,我们再次创建一个子进程,并退出当前进程,这样运行的进程就

5、不再是会话组长。 8.         */  9.        $pid = pcntl_fork();  10.        if ($pid == -1) {  11.            throw new Exception('fork子进程失败');  12.        } elseif ($pid > 0) {  13.            //再一次退出父进程,子进程成为最终的守护进程  14.            exit(0);  15.        }  16.        

6、//由于守护进程用不到标准输入输出,关闭标准输入,输出,错误输出描述符  17.        fclose(STDIN);  18.        fclose(STDOUT);  19.        fclose(STDERR);  20.    }  21.}  22.  23.$daemon = new Daemon();  24.$daemon->init();  25.  26.//处理业务代码  27.while(true) {  28.    file_put_contents('/usr/loc

7、al/src/log.txt', time().PHP_EOL, FILE_APPEND);  29.    sleep(5);  30.}  该脚本的作用,就是每隔5秒,向日志文件中写入一个时间戳,当然,这个只是一个简单的示例,具体应用中,我们还需要根据业务的不同,编写具体的业务处理代码。2.以后台方式运行php脚本在命令行下,输入:[plain] viewplain copy1.nohup php /usr/local/src/daemon.php &  3.查看日志输出在命令行下,输入:[plain] vie

8、wplain copy1.tail -f /usr/local/src/log.txt  我们将会看到如下信息:4. 关闭php后台进程首先,我们需要查出该进程的PID,命令:[plain] viewplain copy1.ps -ef 

9、 grep "php /usr/local/src/daemon.php"  然后,通过这个PID把该进程kill掉[p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。