当前位置:首页 > PHP教程 > php高级应用 > 列表

php实现简单的守护进程创建、开启与关闭操作

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-10 17:06:17 浏览: 评论:0 

这篇文章主要介绍了php实现简单的守护进程创建、开启与关闭操作,结合实例形式分析了基于pcntl扩展的php守护进程类定义、启动及关闭等相关操作技巧,需要的朋友可以参考下。

本文实例讲述了php实现简单的守护进程创建、开启与关闭操作,分享给大家供大家参考,具体如下:

前提要安装有pcntl扩展,可通过php -m查看是否安装

  1. <?php 
  2. class Daemon { 
  3.   private $pidfile
  4.   function __construct() { 
  5.     $this->pidfile = dirname(__FILE__).'/daemontest.pid'
  6.   } 
  7.   private function startDeamon() { 
  8.     if (file_exists($this->pidfile)) { 
  9.       echo "The file $this->pidfile exists.\n"
  10.       exit(); 
  11.     } 
  12.     $pid = pcntl_fork(); 
  13.     if ($pid == -1) { 
  14.       die('could not fork'); 
  15.     } else if ($pid) { 
  16.       echo 'start ok'
  17.       exit($pid); 
  18.     } else { 
  19.     // we are the child 
  20.       file_put_contents($this->pidfile, getmypid()); 
  21.       return getmypid(); 
  22.     } 
  23.   } 
  24.   private function start(){ 
  25.     $pid = $this->startDeamon(); 
  26.     while (true) { 
  27.       file_put_contents(dirname(__FILE__).'/test.txt'date('Y-m-d H:i:s'), FILE_APPEND); 
  28.       sleep(2); 
  29.     } 
  30.   } 
  31.   private function stop(){ 
  32.     if (file_exists($this->pidfile)) { 
  33.       $pid = file_get_contents($this->pidfile); 
  34.       posix_kill($pid, 9); 
  35.       unlink($this->pidfile); 
  36.     } 
  37.   } 
  38.   public function run($argv) { 
  39.     if($argv[1] == 'start') { 
  40.       $this->start(); 
  41.     }else if($argv[1] == 'stop') { 
  42.       $this->stop(); 
  43.     }else
  44.       echo 'param error'
  45.     } 
  46.   } 
  47. $deamon = new Daemon(); 
  48. $deamon->run($argv); 

启动

php deamon.php start

关闭

php deamon.php stop

Tags: php守护进程

分享到: