[PHP]进程篇
时间:2007-02-17 来源:PHP爱好者
最近写了一个 监控在线进程的程序.目的是为了 能实时监控执行程序是否断线,并及时重启。用PHP写的,不算难,还成,但对于自己来讲挺有成就感的。程序部分略省。#将perl进程指向到一个文本中。 $psfile
$command = "ps ax | grep perl | grep -v "> $psfile" >$psfile";
exec($command); $process_array = file($psfile); #打开文本
$sum_process = sizeof($process_array); #文本的每一行作为数组元素,此sizeof 则是 取元素个,即行数。for ($i=0 ; $i <$sum_process ; $i++)
{
echo $process_array[$i]."n"; #$process_array[$i] 为文本中i行的记录
echo $province_id[$PID]."n";
if(strstr($process_array[$i],$province_id[$PID])) # 对比是否存在进程
{
echo "有进程n";
$thread=1;
break;
}
}
$command = "perl ".$program." > ".$phppath.$name."abc.txt &"; #重起进程命令
system($command); #重起进程
特别说明:1. 命令 ps ax | grep perl | grep -v "> $psfile" >$psfile 很奇怪: ps ax|grep perl > abc.dat (命令正确) 在sh里执行 与 用PHP 执行 输出结果会不同,所以需要加入 一个 管道 | grep -v "> $psfile" 就可以。大致作用是-v 不匹配$psfile 而且其他的输出。 具体原因不明挺奇怪的。2. system() 函数 PHP的此函数有个毛病 ~ 是执行时,它必须把当前的进程程序执行完后才会跳出,继续循环下一个需要重启的程序,就是说 如果有多个进程需要重启的话,那么此函数只能是一直等待 当前的进程程序执行完,才能重启下一个。。。。。。。。。。。。(汗颜)解决方案: 将命令 写成后由后台执行。 就是---》 多加一个 & (别小看这个~ 可解决了大问题)例 : perl abc.pl > abc.dat & OK~ 大功告成! ~^-^~
php爱好者站 http://www.phpfans.net Linux|Apache|IIS.
$command = "ps ax | grep perl | grep -v "> $psfile" >$psfile";
exec($command); $process_array = file($psfile); #打开文本
$sum_process = sizeof($process_array); #文本的每一行作为数组元素,此sizeof 则是 取元素个,即行数。for ($i=0 ; $i <$sum_process ; $i++)
{
echo $process_array[$i]."n"; #$process_array[$i] 为文本中i行的记录
echo $province_id[$PID]."n";
if(strstr($process_array[$i],$province_id[$PID])) # 对比是否存在进程
{
echo "有进程n";
$thread=1;
break;
}
}
$command = "perl ".$program." > ".$phppath.$name."abc.txt &"; #重起进程命令
system($command); #重起进程
特别说明:1. 命令 ps ax | grep perl | grep -v "> $psfile" >$psfile 很奇怪: ps ax|grep perl > abc.dat (命令正确) 在sh里执行 与 用PHP 执行 输出结果会不同,所以需要加入 一个 管道 | grep -v "> $psfile" 就可以。大致作用是-v 不匹配$psfile 而且其他的输出。 具体原因不明挺奇怪的。2. system() 函数 PHP的此函数有个毛病 ~ 是执行时,它必须把当前的进程程序执行完后才会跳出,继续循环下一个需要重启的程序,就是说 如果有多个进程需要重启的话,那么此函数只能是一直等待 当前的进程程序执行完,才能重启下一个。。。。。。。。。。。。(汗颜)解决方案: 将命令 写成后由后台执行。 就是---》 多加一个 & (别小看这个~ 可解决了大问题)例 : perl abc.pl > abc.dat & OK~ 大功告成! ~^-^~
php爱好者站 http://www.phpfans.net Linux|Apache|IIS.
相关阅读 更多 +