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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
截获网站title标签之家内容的例子
Oct 09 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
redis+php实现微博(三)微博列表功能详解
Sep 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中CI操作多个数据库的代码
2012/07/05 PHP
关于crontab的使用详解
2013/06/24 PHP
初识php MVC
2014/09/10 PHP
js随机颜色代码的多种实现方式
2013/04/23 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
PyQt5实现登录页面
2020/05/30 Python
基于python 取余问题(%)详解
2020/06/03 Python
python MD5加密的示例
2020/10/19 Python
如何唤起类中的一个方法
2013/11/29 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
简短大学毕业感言
2014/01/18 职场文书
反邪教标语
2014/06/23 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
基于Python实现对比Exce的工具
2022/04/07 Python