<?php
$pid = pcntl_fork(); // fork
if ($pid < 0)
exit;
else if ($pid) // parent
exit;
else { // child $sid = posix_setsid(); if ($sid < 0)
exit; for($i = 0; $i <= 60; $i++) { // do something for 5 minutes
sleep(5);
}
}
?>

  这是php官方手册给出的方法,不过在Unix环境高级编程中有这样一个提示:在基于System V的系统中,有些人建议再次焦勇fork,终止父进程,继续使用子进程中的守护进程。这就保证了守护进程不是会话首进程,于是按照System V规则,可以防止它取得控制终端。

  所以可能以下代码会更好一些:

<?php
$pid = pcntl_fork(); // fork
if ($pid < 0)
exit('fork fail');
else if ($pid) // parent
exit(0);
else { // child $sid = posix_setsid(); if ($sid < 0)
exit('set sid fail'); $pid = pcntl_fork(); if ($pid < 0)
exit('fork fail'); else if ($pid) //parent process
eixt(0);
else { //chlid
//code ....
       exit(0); 
} }
?>

  

Linux环境下,使用PHP创建一个守护进程的更多相关文章

  1. linux里面的fork函数创建一个新进程

    由fork创建的新进程成为子进程,fork函数被调用一次,但是返回两次,

  2. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  3. 由一个简单需求到Linux环境下的syslog、unix domain socket

    本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参 ...

  4. Linux环境下C语言线程创建---简单代码

    在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include <stdio.h> #include <pthread.h> ...

  5. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  6. 在LINUX环境下定时执行php脚本

    1. 使用Crontab定时执行linux环境下的php脚本文件 Cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 c ...

  7. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  8. 第六周——分析Linux内核创建一个新进程的过程

    "万子恵 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 &q ...

  9. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

随机推荐

  1. 【java】在controller层使用的检查单一字段不能为null和检查属性中某些字段不能为null的工具

    ========================================================================================= 代码参考地址:Git ...

  2. JAVA常见算法题(五)

    package com.xiaowu.demo; /** * 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. * * * @ ...

  3. ubuntu常用 命令

    卸载软件 ,比如chrome sudo apt-get remove google-chrome-stable

  4. ubuntu 16.04 网络配置之虚拟网卡的配置

    关于图形界面的配置,我这里就不多介绍了,这个很简单.这里介绍的是如何通过修改配置文件来实现虚拟网卡. 首先介绍ubuntu(我这里使用的是ubuntu-16.04)下虚拟网卡的配置 1.先用ifcon ...

  5. python调用top命令获得CPU利用率

    1.python调用top命令获得CPU利用率 思路:通过python调用top命令获取cpu使用率 #python2代码 [root@zdops-server script]# cat cpu_lo ...

  6. 41个linux命令大全(鸟哥的私房菜)

    转http://www.xmws.cn/show-87-419-1.html 41个linux命令大全 发布作者:微思网络   发布时间:2017-01-10   浏览量:709次 学过linux的人 ...

  7. functor

    I thought it would be easy and convenient to define a small functor and perform a customized sort on ...

  8. SparkMLlib基础内容

    SparkMLlib基础内容 (一),多种数据类型 1.1 本地向量集 def testVetor: Unit ={ val vd:Vector=Vectors.dense(2,3,6) printl ...

  9. 2017.7.1 mysql安装与启动(已验证可以使用)

    下载地址:http://learning.happymmall.com/ 之前一直用解压版安装,启动mysql服务的时候总是失败,这次用mysql installer安装一遍,终于成功启动. 1.下载 ...

  10. 使用Spring开发和监控线程池服务

    第1步:添加maven 项目 第2步:添加依赖库 将Spring的依赖添加到Maven的pom.xml文件中. 1 2 3 4 5 6 7 8 9 10 11 <!-- Spring 3 dep ...