Skip to content
Qing Zhao edited this page Mar 26, 2015 · 2 revisions

编写Daemon程序时,我们可以使用一个PID文件标记进程是否已经被创建,防止进程被重复启动,PID文件同时记录了进程号,以便于向进程发送信号。QPM中的pidfile正是用来管理PID文件的模块。

例子: pid_main.php

    <?php
    use Comos\Qpm\Pid\Manager;
    
    $man = new Manager(__FILE__.'.pid');
    $man->start();
    while(true) sleep(10);
    ?>

首次执行 php pid_main.php,我们能看到生成了 pid_main.php.pid文件,进程持续运行。 再次执行 php pid_main.php,脚本报错,提示进程已经存在。 Fatal error: Uncaught exception 'Comos\Qpm\Pid\Exception' with message 'process exists, no need to start a new one' in ...Comos/Qpm/Pid/Manager.php:41

此外,Manager 还有getProcess 方法。 pid_check.php

    <?php
     $man = new Comos\Qpm\Pid\Manager(__DIR__.'/pid_main.php.pid');
     echo $man->getProcess()->getPid();
    ?>

如果pid文件不存在或为空,则会抛出异常。 注意:getProcess方法获取的对象,并不100%确保是原进程。后续版本会改进这里的检测。

Clone this wiki locally