用php守护另一个php进程的例子

 要用php守护另一个php进程(apache模块的运行的,还有nginx等运行的除外)

a.php要守护b.php

在b.php中 通过 getmypid()函数获取当前进程的id,并将id写入c.pid文件中,如果程序执行完成将c.pid文件删除或清空

在a.php中 验证c.pid是否存在 ,是否为空,如果不为空,将pid读出,通过exec执行 ps -p pid|grep 文件名来判断是否运行,判断后执行相应操作

可能有人要问,为什么不直接 ps aux|grep 文件名,这里主要是考虑到文件重名的情况下会出问题

a.php 代码

代码如下:

<?
$id=intval($argv[1]);
if(!file_exists(‘pid'.$id.'.pid')){
echo “not run”;
exit;
}
$content=file_get_contents(‘pid'.$id.'.pid');
if(empty($content)){
echo “not run”;
exit;
}
exec(“ps p “.$content.'|grep b.php',$pids);
if(count($pids)>0) echo(‘runing');
else{echo ‘not run';}
?>

b.php代码

代码如下:

<?

 

$id=intval($argv[1]);
if(empty($id))exit;
file_put_contents(‘pid'.$id.'.pid',getmypid());
while(1){
file_put_contents(‘pid'.$id.'.pid',getmypid());
sleep(100);
}
?>

时间: 2024-11-03 22:00:25

用php守护另一个php进程的例子的相关文章

用php守护另一个php进程的例子_php实例

要用php守护另一个php进程(apache模块的运行的,还有nginx等运行的除外) a.php要守护b.php 在b.php中 通过 getmypid()函数获取当前进程的id,并将id写入c.pid文件中,如果程序执行完成将c.pid文件删除或清空 在a.php中 验证c.pid是否存在 ,是否为空,如果不为空,将pid读出,通过exec执行 ps -p pid|grep 文件名来判断是否运行,判断后执行相应操作 可能有人要问,为什么不直接 ps aux|grep 文件名,这里主要是考虑到

Qt之运行一个实例进程

简述 发布程序的时候,我们往往会遇到这种情况: 只需要用户运行一个实例进程 用户可以同时运行多个实例进程 一个实例进程的软件有很多,例如:360.酷狗- 多个实例进程的软件也很多,例如:Visual Studio.Qt Ctretor.QQ- 下面我们来介绍下如何实现一个实例进程. 简述 QSharedMemory QLocalServer QtSingleApplication 任务列表 更多参考 QSharedMemory 使用共享内存来实现,key值唯一,一般可以用组织名+应用名来确定.

c#如何让管理员权限的进程创建一个普通进程

问题描述 c#如何让管理员权限的进程创建一个普通进程 如题,现在用c#写了一个控制台程序并以administrator身份运行,如何让它创建一个当前用户(普通用户)身份的普通权限进程. 解决方案 权限提升很复杂,资料也很少,最好的方法是构建一个服务来完成高权限的工作.见我的另一个提问http://ask.csdn.net/questions/162747 解决方案二: 用Process.Start调用runas命令可以做到. 解决方案三: CreateProcessAsUser() 解决方案四:

hook-windows下如何把一个jar注入一个java进程

问题描述 windows下如何把一个jar注入一个java进程 如题, 其实我想hook一个java进程内的某一个类库. 想做到像windows下的dll注入到一个进程里并hook api一样的效果. 对java程序该如何做,谢谢

操作系统-一个关于进程隔离的小问题

问题描述 一个关于进程隔离的小问题 IA-32架构的CPU在32位保护模式下使用[选择子:偏移]来得到线性地址,那么如果已知存在一个低权限的GDT表项,那是否意味着应用程序可以通过[该GDT表项对应的选择子:偏移]来对该段进行读写操作呢?还是有相应的机制来避免无关应用程序对其的访问? 解决方案 http://www.haote.com/jiaocheng/36925.html

JVM源码分析之一个Java进程究竟能创建多少线程

概述 虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从JVM源码角度来分析,更多的来自于Linux Kernel的源码分析,今天要说的是JVM里比较常见的一个问题 这个问题可能有几种表述 一个Java进程到底能创建多少线程? 到底有哪些因素决定了能创建多少线程? java.lang.OutOfMemoryError: unable to create new native thread的异常究竟是怎么回事 不过我这里先声明下可能不能完全百分百将各种因素都理出来,因为毕竟我不是做Lin

linux下exec创建一个gcc进程来编译代码,如何判定编译是否成功?

问题描述 linux下exec创建一个gcc进程来编译代码,如何判定编译是否成功? 代码在下面-- 1 #include 2 #include 3 #include 4 #include 5 #include 6 8 char * cmdargv[20] = {0}; 9 int main(void) 10 { 11 pid_t pid; 13 int retval; 16 17 while(1){ 20 if((pid = fork()) < 0){ 21 perror("fork&qu

怎么用Cacti监测Linux的服务器的一个指定进程?

问题描述 怎么用Cacti监测Linux的服务器的一个指定进程? 解决方案 解决方案二:之前我也不懂,后来经朋友介绍,一款名叫美信CreCloud云网管的软件,这是一款全中文的服务器监控软件,安装.使用非常简单.监测进程只要简单配置就可以实现.并且是全球第一套引入"云计算"的网管软件,我觉得很好用,特此推荐一下,而且是免费的呢!http://www.mxsoft.com

分析Linux内核创建一个新进程的过程【转】

转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用,来分析Linux内核创建新进程的过程 关键词:fork, 系统调用,进程 *运行环境:** Ubuntu 14.04 LTS x64 gcc 4.9.2 gdb 7.8 vim 7.4 with vundle 分析 分析方法说明 PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时