PHP如何將進程作為守護進程


看了這篇:http://blog.codinglabs.org/articles/write-daemon-with-php.html

對里面的posix_setsid()不解

文檔解釋是“Make the current process a session leader”

參考文檔:http://linux.die.net/man/2/setsid

意思就是在一個進程組之間(父進程和子進程)調用這個函數的進程會被選舉為進程組的leader

所以讓一個進程成為守護進程的方法就是:

1 fork出一個子進程

2 在子進程posix_setsid()

3 退出父進程

文檔中有這么個例子:

<?php
    $pid = pcntl_fork(); // fork
    if ($pid < 0)
        exit;
    else if ($pid) // parent
        exit;
    else { // child
        $sid = posix_setsid();
        if ($sid < 0)
            exit;
        for($i = 0; $i <= 60; $i++) { // do something for 5 minutes
            sleep(5);
        }
    }
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM