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


Posted in PHP onAugust 13, 2019

本文实例讲述了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下的转义字符串)
Apr 12 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
PHP遍历数组的几种方法
Mar 22 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
PHP模块化安装教程
Jun 01 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
php通过header发送自定义数据方法
Jan 18 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
Laravel如何同时连接多个数据库详解
Aug 13 #PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 #PHP
php链式操作的实现方式分析
Aug 12 #PHP
基于PHP实现微信小程序客服消息功能
Aug 12 #PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 #PHP
PHP基于swoole多进程操作示例
Aug 12 #PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 #PHP
You might like
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
PHP多个版本的分析解释
2011/07/21 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
php如何获取Http请求
2020/04/30 PHP
页面中js执行顺序
2009/11/09 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
使用C++扩展Python的功能详解
2018/01/12 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
在python里面运用多继承方法详解
2019/07/01 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
说出一些常用的类,包,接口
2014/09/22 面试题
大门门卫岗位职责
2013/11/30 职场文书
五四青年节演讲稿
2014/05/26 职场文书
应聘教师求职信
2014/07/19 职场文书
群众路线剖析材料
2014/09/30 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL