当前位置:首页 > PHP教程 > php应用 > 列表

Linux中用PHP判断程序运行状态的2个方法

发布:smiling 来源: PHP粉丝网  添加日期:2020-11-27 16:01:15 浏览: 评论:0 

这篇文章主要介绍了Linux中用PHP判断程序运行状态的2个方法,需要的朋友可以参考下。

有时候在服务器上面写一些脚本的时候,经常要放到crontab里面定时运行。时间长了就有一个问题,那就是程序重复运行消耗太多的资源,怎么处理呢?下面我写了两种方法:

第一种:用linux里面的正则匹配,代码如下:

  1. function ifrun($clsname,$bf = 0) 
  2.     //下面进行检测,如有一个进程正在运行,则不运行 
  3.     $str=shell_exec("/bin/ps ax > /home/root/".$clsname."_run.txt"); 
  4.     $str=shell_exec("/bin/grep -c '".$clsname.".php' /home/root/".$clsname."_run.txt"); 
  5.  
  6.     if($bf >0) 
  7.     { 
  8.         if($str >=$bf
  9.         { 
  10.             return 1; 
  11.         } 
  12.         else 
  13.         { 
  14.             return 0; 
  15.         } 
  16.     } 
  17.     else 
  18.     { 
  19.         if ($str>=2) 
  20.         { 
  21.            return 1; 
  22.         } 
  23.         else 
  24.         { 
  25.            return 0; 
  26.         } 
  27.     } 

调用:

if (ifrun('pooy',5)) {    die("pooy is running"); }

备注:pooy是程序pooy.php的名称!

第二种:把进程写到文件里面,然后用file函数去读取然后去匹配字符串,代码如下:

  1. system('ps -ef |grep wget > /root/pooy.txt'); 
  2. $arr=file('/root/pooy.txt'); 
  3. $total=count($arr); 
  4. for($i=0;$i<$total;$i++){ 
  5.   $count=array(); 
  6.    if(stristr($arr[$i],'www/pooy') !== FALSE) { 
  7.     //echo '"earth" not found in string'; 
  8.       $count[]='no'
  9.       break
  10.   } 
  11.  
  12.  
  13. if(count($count) >= 1 ) 
  14.     echo "A same programs are running"
  15.     exit(); 
  16. }else 
  17.     echo "start__________________________________________________"

注:”www/pooy” 是程序里面包含的字符串!

现在php程序在linux运行是否通畅多了呢?

Tags: PHP判断程序运行状态

分享到: