php教程

超轻量级php框架startmvc

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

更新时间:2020-04-07 01:09:24 作者:startmvc
本文实例讲述了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 守护进程