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 相关文章推荐
实用函数5
Nov 08 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
php车辆违章查询数据示例
Oct 14 PHP
php微信开发之关键词回复功能
Jun 13 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 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开发的一些注意点总结
2010/10/12 PHP
js实现可拖动DIV的方法
2013/12/17 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
用python实现批量重命名文件的代码
2012/05/25 Python
在Python中关于中文编码问题的处理建议
2015/04/08 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
python显示生日是星期几的方法
2015/05/27 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
numpy自动生成数组详解
2017/12/15 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python使用requests.session模拟登录
2019/08/09 Python
自定义django admin model表单提交的例子
2019/08/23 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
PyTorch中permute的用法详解
2019/12/30 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python调用Redis的示例代码
2020/11/24 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
心得体会怎么写
2013/12/30 职场文书
清洁工表扬信
2014/01/08 职场文书
单位委托书怎么写
2014/08/02 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
钳工实训报告总结
2014/11/04 职场文书
金秋助学感谢信
2015/01/21 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电