创建守护进程并且接收信号
2016-03-04 13:57
232 查看
> 官方有这样的资料进行查阅的,想了解的可以百度下,我就说下我自己的了解。
一个程序进入内存。告诉cup怎么执行。链接内存和cpu
他们之间的联系就依靠这个进程
所以进程就是实现调度和管理资源的
首先如果想php进行多进程编程。首先了解下怎么去创建进程
c语言,都是fork vfork创建的
php提供了pcntl_fork创建进程的,其实也是fork。
只是c语言对它进行的一种封装(注:个人猜测没有看源码)
那么守护进程是什么的,它随着系统的开始而开始的,系统的消亡而消亡的,常驻内存中。
有什么这样的软件那,比如apapche 还有nginx 等等
那么守护进程有什么好处,能干嘛
比如我想实现一个crontabl的功能,如果不用linux系统命令。
该怎么实现。如果会这些思想。那么写这个程序是很简单的事。
如果会写进程了。那干嘛又要了解信号那,为什么要了解信号。信号就是进程之间进行通信的状态。
以上属于个人理解。如果有不对的。可以评价谢谢
下面放出一段代码。让大家了解下怎么创建守护进程。怎么接收信号。创建守护进程每隔5秒执行一次写入操作
作者
@承鹏辉
<?php
function signalHandler($signal) {
global $worker_pid;
if ($signal == SIGINT) {
file_put_contents($worker_pid.'_kill_id.pid',$worker_pid);
exit(0);
}
if ($signal == SIGTERM) {
file_put_contents($worker_pid.'_kill_id.pid',$worker_pid);
exit(0);
}
}
$pid = pcntl_fork();
if ( $pid < 0) {
die('fork failed');
} else if ( $pid > 0 ) {
exit(0);
}
//在子进程注册信号
pcntl_signal(SIGINT, 'signalHandler');
pcntl_signal(SIGTERM, 'signalHandler');
$worker_pid = posix_getpid();
if ($worker_pid){
file_put_contents($worker_pid.'_start_id.pid',$worker_pid);
}
while (1) {
file_put_contents('data.txt',"write name:peen\n",FILE_APPEND);
sleep(5);
pcntl_signal_dispatch();
}
一个程序进入内存。告诉cup怎么执行。链接内存和cpu
他们之间的联系就依靠这个进程
所以进程就是实现调度和管理资源的
首先如果想php进行多进程编程。首先了解下怎么去创建进程
c语言,都是fork vfork创建的
php提供了pcntl_fork创建进程的,其实也是fork。
只是c语言对它进行的一种封装(注:个人猜测没有看源码)
那么守护进程是什么的,它随着系统的开始而开始的,系统的消亡而消亡的,常驻内存中。
有什么这样的软件那,比如apapche 还有nginx 等等
那么守护进程有什么好处,能干嘛
比如我想实现一个crontabl的功能,如果不用linux系统命令。
该怎么实现。如果会这些思想。那么写这个程序是很简单的事。
如果会写进程了。那干嘛又要了解信号那,为什么要了解信号。信号就是进程之间进行通信的状态。
以上属于个人理解。如果有不对的。可以评价谢谢
下面放出一段代码。让大家了解下怎么创建守护进程。怎么接收信号。创建守护进程每隔5秒执行一次写入操作
作者
@承鹏辉
<?php
function signalHandler($signal) {
global $worker_pid;
if ($signal == SIGINT) {
file_put_contents($worker_pid.'_kill_id.pid',$worker_pid);
exit(0);
}
if ($signal == SIGTERM) {
file_put_contents($worker_pid.'_kill_id.pid',$worker_pid);
exit(0);
}
}
$pid = pcntl_fork();
if ( $pid < 0) {
die('fork failed');
} else if ( $pid > 0 ) {
exit(0);
}
//在子进程注册信号
pcntl_signal(SIGINT, 'signalHandler');
pcntl_signal(SIGTERM, 'signalHandler');
$worker_pid = posix_getpid();
if ($worker_pid){
file_put_contents($worker_pid.'_start_id.pid',$worker_pid);
}
while (1) {
file_put_contents('data.txt',"write name:peen\n",FILE_APPEND);
sleep(5);
pcntl_signal_dispatch();
}
相关文章推荐
- Linux进程间关系之守护进程
- 自己创建守护进程
- 解析几何:第六章 二次曲面(1)球面 椭球面 双曲面
- 【什么是长尾关键词(Long Tail Keyword)】
- QCOM耳机检测功能是如何注册input设备的
- List,Set,Map用法以及区别
- Android Studio 更换国内源下载依赖库
- SecureCRT 遇到一个致命的错误且必须关闭——解决
- POJ2391:Ombrophobic Bovines floyd+二分答案+最大流
- [置顶] Android WiFi开发 (一)扫描、连接、信息
- 面试题总结——JAVA高级工程师
- leetcode--Binary Tree Paths
- 【redis】redis 在 windows 下安装使用
- STL_算法_05_集合算法
- IntelliJ IDEA中js代码报如下警告的解决方法
- Android中Preference的使用以及监听事件分析
- 秒杀系统架构分析与实战
- Emgucv 图像操作笔记
- c# 调用 C++ dll 传入传出 字符串
- 转载:CSS垂直居中总结