PHP写守护进程时要注意什么
创始人
2024-12-19 06:23:25
0次

  functionstart($file){

  $path=dirname(__FILE__).'/';

  $runfile=$path.$file.'.run';

  $diefile=$path.$file.'.die';

  $file=$path."data/{$file}.php";

  clearstatcache();

  if(file_exists($runfile)){

  $oldpid=file_get_contents($runfile);

  $nowpid=shell_exec("psaux|grep'php-fprocess.php'|grep${oldpid}|awk'{print$2}'");

  //假如runfile中的pid号可以匹配到正在运行的,并且上次访问runfile的时间和现在相差小于5min则返回

  if(($oldpid==$nowpid)&&(time()-fileatime($runfile)<300)){   echo"$fileiscircleruningno";   return;   }else{   //pid号不匹配或者已经有300秒没有运行循环语句,直接杀掉进程,重新启动   $pid=file_get_contents($runfile);   shell_exec("psaux|grep'php-fprocess.php'|grep{$pid}|xargs--if-no-run-emptykill");   }   }else{   //将文件pid写入run文件   if(!($newpid=getmypid())||!file_put_contents($runfile,$newpid)){   return;   }   while(true){   //收到结束进程新号,结束进程,并删除相关文件   if(file_exists($diefile)&&unlink($runfile)&&unlink($diefile)){   return;   }   /*这里是守护进程要做的事*/   file_put_contents($file,"I'mRuningNow".PHP_EOL,FILE_APPEND);   /***********************/   touch($runfile);   sleep(5);   }   }   }   start("test");   

PHP写守护进程时要注意什么   

1.首先就是函数clearstatcache()函数那里,查官方手册可以知道该函数是清除文件状态缓存的,当在一个脚本中多次检查同一个文件的缓存状态时假如不用该函数就会出错,受该函数影响的有:stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),is_link(),filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),filesize(),filetype(),fileperms().   

2.在多次运行该脚本时,会在运行前进行检测,上次执行循环的时间距离现在大于300s或者pid号不匹配都会重启该进程(时间在每次执行循环式都要更新touch)。   

3.自动重启也用到了crontab的日程表,将该文件添加入日程表:   crontab-e   #打开日程表,inset模式   */3****/usr/bin/php-fprocess.php   #每3分钟执行一次,放置进程挂掉   这样就基本ok了,要是有具体功能的话还需改动代码。   

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...