這篇文章主要介紹了php實現簡單的守護進程創建、開啓與關閉操作,結合實例形式分析了基於pcntl擴展的php守護進程類定義、啓動及關閉等相關操作技巧,需要的朋友可以參考下
本文實例講述了php實現簡單的守護進程創建、開啓與關閉操作。分享給大家供大家參考,具體如下:
前提要安裝有pcntl擴展,可通過php -m
查看是否安裝
<?php class Daemon { private $pidfile; function __construct() { $this->pidfile = dirname(__FILE__).'/daemontest.pid'; } private function startDeamon() { if (file_exists($this->pidfile)) { echo "The file $this->pidfile exists.\n"; exit(); } $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else if ($pid) { echo 'start ok'; exit($pid); } else { // we are the child file_put_contents($this->pidfile, getmypid()); return getmypid(); } } private function start(){ $pid = $this->startDeamon(); while (true) { file_put_contents(dirname(__FILE__).'/test.txt', date('Y-m-d H:i:s'), FILE_APPEND); sleep(2); } } private function stop(){ if (file_exists($this->pidfile)) { $pid = file_get_contents($this->pidfile); posix_kill($pid, 9); unlink($this->pidfile); } } public function run($argv) { if($argv[1] == 'start') { $this->start(); }else if($argv[1] == 'stop') { $this->stop(); }else{ echo 'param error'; } } } $deamon = new Daemon(); $deamon->run($argv);
啓動
php deamon.php start
關閉
php deamon.php stop
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP進程與線程操作技巧總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧彙總》
希望本文所述對大家PHP程序設計有所幫助。