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 相关文章推荐
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
php中序列化与反序列化详解
Feb 13 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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生成自己的LOG文件
2006/10/09 PHP
详解PHP数组赋值方法
2015/11/07 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python编程之event对象的用法实例分析
2017/03/23 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
Python txt文件如何转换成字典
2020/11/03 Python
python 实现图片裁剪小工具
2021/02/02 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
2014年国培研修感言
2014/03/09 职场文书
给校长的建议书600字
2014/05/15 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
python字符串的多行输出的实例详解
2021/06/08 Python
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技