这篇文章主要介绍”PHP写守护进程时要注意什么”,在日常操作中,相信很多人在PHP写守护进程时要注意什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“PHP写守护进程时要注意什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
functionstart(文件){
=$ path目录名(__FILE__) # 39;公司/& # 39;;
$ runfile=路径。文件# 39;公司美元.run& # 39;;
$ diefile=路径。文件# 39;公司美元.die& # 39;;
=$ $文件路径!”数据/{$文件}.php";
函数();
如果(file_exists (runfile美元)){
file_get_contents ($ runfile); $ oldpid=
$ nowpid=shell_exec (“psaux | grep # 39; php-fprocess.php& # 39; $ {oldpid} | | grep awk # 39; {print $ 2} & # 39;“);
//假如runfile中的pid号可以匹配到正在运行的,并且上次访问runfile的时间和现在相差小于5分钟则返回
如果((oldpid==nowpid美元),和(时间()-fileatime (runfile美元)& lt; 300)) { echo" fileiscircleruningno"美元;; 返回; 其他}{//pid号不匹配或者已经有300秒没有运行循环语句,直接杀掉进程,重新启动 file_get_contents ($ $ pid=runfile); shell_exec (“psaux | grep # 39; php-fprocess.php& # 39; | grep {$ pid} | xargs - if-no-run-emptykill"); } 其他}{//将文件pid写入运行文件 如果(! $ newpid=getmypid()) | | !写入(runfile, newpid美元)){ 返回; } 而(真){//收到结束进程新号,结束进程,并删除相关文件 如果(file_exists (diefile美元),及分离(runfile美元),及分离(diefile美元)){ 返回; }/*这里是守护进程要做的事*/写入文件,美元“我# 39;mRuningNow" .PHP_EOL, FILE_APPEND);/* * * * * * * * * * * * * * * * * * * * * * */触摸($ runfile); 睡眠(5); } } } 开始(“test");
PHP写守护进程时要注意什么
1。首先就是函数函数()函数那里,查官方手册可以知道该函数是清除文件状态缓存的,当在一个脚本中多次检查同一个文件的缓存状态时假如不用该函数就会出的错,受该函数影响的有:stat (), lstat (), file_exists (), is_writable (), is_readable (), is_executable (), is_file (), is_dir(),作用是(),filectime (), fileatime (), filemtime (), fileinode (), filegroup (), fileowner(),文件大小()、文件类型()函数()。
2。在多次运行该脚本时,会在运行前进行检测,上次执行循环的时间距离现在大于300年代或者pid号不匹配都会重启该进程(时间在每次执行循环式都要更新接触)。
3。自动重启也用到了crontab的日程表,将该文件添加入日程表:crontab-e #打开日程表,插入模式3 * * * * *//usr/bin/php-fprocess。php #每3分钟执行一次,放置进程挂掉这样就基本好了,要是有具体功能的话还需改动代码。
到此,关于“php写守护进程时要注意什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!