接上節我們來實戰操刀一個簡單的 PHP 守護程式!

taozywu發表於2019-07-01

<?php
// 編寫一個簡單daemon程式
$pid = pcntl_fork();

switch($pid) {
        case 0: 
            // 2.子程式邏輯
            $mypid = posix_getpid();
            //echo "Son pid is $mypid\n";

            // 3.升級組長程式
            if (!$sid = posix_setsid()) {
                    exit("Set sid error\n");
            }

            // 4.防止組長程式再次控制終端
            if (-1 == pcntl_fork()) {
                    exit("Fork error\n");
            }

            // 5.標準輸入/輸出/錯誤
            fclose(STDIN);
            fclose(STDOUT);
            fclose(STDERR);

            // 6.改變目錄
            chdir("/");

            // 7.重設掩碼
            umask(0);
            break;

        case -1:
            // fork err
            exit("Fork error\n");
            break;

        default:
            // 1.父程式邏輯
            $mypid = posix_getpid();
            //echo "Parent pid is $mypid\n";
            exit();
            break;
}

for ($i = 0; $i < 10000; $i ++) {
        file_put_contents("/tmp/wutao.log", "i=$i\n", FILE_APPEND);
}

sleep(10);

===
如上程式已加註釋並加了序號。大家可以參考一下,有啥疑問或問題我們們可以及時交流, 感謝!
下節我們們講講程式/執行緒/多程式的一些相關基礎,一起再鞏固複習複習!

相關文章