Linux环境下,使用PHP创建一个守护进程
2024-08-20 13:19:34
<?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);
} }
?>
最新文章
- Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql)
- java语言实现堆排序
- [转]StructLayout特性
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
- hdoj 5112 A Curious Matt
- bzoj1264
- Arbitrage
- 使用OpenFileDialog实现图片上传
- CodeKata
- egrep和grep有什么区别
- 2.IKAnalyzer 中文分词器配置和使用
- .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法—获取数据库表结构方法和跟参数赋值方法
- UVALive 4119 Always an integer (差分数列,模拟)
- 使用CSS来显示XML
- java配置环境变量,无法也行javac问题
- linux在tomcat中指定jdk
- 爬虫之pyspider
- django mysql 数据库配置
- 结对项目junit测试用例
- JAVA基础部分复习(五、JAVA反射)