data-id="1190000005056078" data-license="sa">
使用函數
<code>pcntl_fork();//创建子进程 posix_setsid();//设置当前进程为进程组长 posix_getpid();//获取进程id</code>
範例
workerman中將進程
<code>/** * Run as deamon mode. * * @throws Exception */ protected static function daemonize() { if (!self::$daemonize) { return; } /** * 重设文件权限掩码 * 子进程从父进程继承了文件权限 * 若子进程不涉及到文件创建,可取消 */ umask(0); $pid = pcntl_fork();//创建子进程 if (-1 === $pid) { throw new Exception('fork fail'); } elseif ($pid > 0) { exit(0); //父进程退出 } /** * 更改子进程为进程组长 * 使子进程摆脱父进程控制 */ if (-1 === posix_setsid()) { throw new Exception("setsid fail"); } // Fork again avoid SVR4 system regain the control of terminal. $pid = pcntl_fork(); if (-1 === $pid) { throw new Exception("fork fail"); } elseif (0 !== $pid) { exit(0); } }</code>
其他說明
ux它是一個生存期較長的進程,通常獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。守護程式常常在系統引導裝入時啟動,在系統關閉時終止。 進程組:是一個或多個進程的集合。進程組有進程組ID來唯一識別。除了進程號(PID)之外,進程組ID也是一個進程的必備屬性。每個進程組都有一個組長進程,其組長進程的進程號等於進程組ID。且該進程組ID不會因組長進程的退出而受到影響。 會話週期:會話期是一個或多個進程組的集合。通常,一個會話開始於使用者登錄,終止於使用者退出,在此期間該使用者執行的所有進程都屬於這個會話期。 建立流程 fork子進程,父進程退出以上就介紹了workerman筆記-php創建守護進程,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。