Linuxx環境下,使用PHP建立一個守護進程

來源:互聯網
上載者:User

標籤:守護進程   unix   manual   logs   規則   i++   系統   minutes   code   

<?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);        }    }?>

  這是php官方手冊給出的方法,不過在Unix環境進階編程中有這樣一個提示:在基於System V的系統中,有些人建議再次焦勇fork,終止父進程,繼續使用子進程中的守護進程。這就保證了守護進程不是會話首進程,於是按照System V規則,可以防止它取得控制終端。

  所以可能以下代碼會更好一些:

<?php    $pid = pcntl_fork(); // fork    if ($pid < 0)        exit(‘fork fail‘);    else if ($pid) // parent        exit(0);    else { // child            $sid = posix_setsid();                if ($sid < 0)            exit(‘set sid fail‘);        $pid = pcntl_fork();        if ($pid < 0)            exit(‘fork fail‘);        else if ($pid)  //parent process            eixt(0);        else  { //chlid            //code ....
       exit(0);  } }?>

  

Linuxx環境下,使用PHP建立一個守護進程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.