免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1409 | 回复: 0
打印 上一主题 下一主题

[PHP]进程篇 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-16 17:28 |只看该作者 |倒序浏览

最近写了一个 监控在线进程的程序.
目的是为了 能实时监控执行程序是否断线,并及时重启。
用PHP写的,不算难,还成,但对于自己来讲挺有成就感的。
程序部分略省。
#将perl进程指向到一个文本中。  $psfile
[color="#3333ff"]$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 $command = "perl ".$program." > ".$phppath.$name."abc.txt &";   #重起进程命令
system($command);  #重起进程
特别说明:
1. 命令 [color="#3333ff"]ps ax | grep perl | grep -v "> $psfile" >$psfile  
    很奇怪: ps ax|grep perl > abc.dat (命令正确) 在sh里执行 与 用PHP 执行 输出结果会不同,所以需要加入 [color="#0000ff"]一个 管道  [color="#3333ff"]| grep -v "> $psfile"  就可以。大致作用是-v 不匹配$psfile[color="#000000"]  而且其他的输出。 具体原因不明挺奇怪的。
2. system() 函数
    PHP的此函数有个毛病 ~ 是执行时,它必须把当前的进程程序执行完后才会跳出,继续循环下一个需要重启的程序,就是说 如果有多个进程需要重启的话,那么此函数只能是一直等待 当前的进程程序执行完,才能重启下一个。。。。。。。。。。。。(汗颜)
解决方案:  将命令 写成后由后台执行。  就是---》 多加一个  &  (别小看这个~ 可解决了大问题)
例 : perl abc.pl > abc.dat &  
OK~
大功告成! ~^-^~


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1184/showart_31461.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP