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来自动调用不同服务器上的flash
Oct 09 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php随机抽奖实例分析
Mar 04 PHP
php数组分页实现方法
Apr 30 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
yii2.0框架场景的简单使用示例
Jan 25 PHP
PHP实现简单注册登录系统
Dec 28 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/14 PHP
php数组遍历类与用法示例
2019/05/24 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python list中append()与extend()用法分享
2013/03/24 Python
Python常用模块介绍
2014/11/21 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
详解Python之unittest单元测试代码
2018/01/24 Python
用Eclipse写python程序
2018/02/10 Python
Python贪心算法实例小结
2018/04/22 Python
深入浅析python 中的匿名函数
2018/05/21 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
python正则表达式实例代码
2020/03/03 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
商场总经理岗位职责
2014/02/03 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
综治目标管理责任书
2015/05/11 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android