java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

php 进程守护

进来发现我每次群发邮件都要跑到服务器折腾一番,守护php的任务,也可以用linux自带的crontab来实现。

但是服务器上这玩意太多了。所以简单开发一个纯php来实现的办法

功能1. 当有任务的时候,执行任务
功能2. 当没有任务时候,自己sleep,每隔一定时间(代码里2秒)扫描任务文件auto.lock,判定是否需要执行任务。如果文件内容为1那么执行任务,如果为0,那么接着睡觉

还可以开发
1. 任务中断,需要改动runonce的代码,在执行过程打断,月小升觉得没必要,我不需要在群发邮件的时候中断
2. 多个任务管理 搞得更复杂了。除非有很多任务要被php管理,否则拷贝一个php 来的方便些。

linux 一次启动,就不管了。

nohup php auto.php &

auto.php 源码

1){
		return true;
	} else{
		return false;
	}
}

/*
‘r’ 只读方式打开,将文件指针指向文件头。
‘r+’ 读写方式打开,将文件指针指向文件头。
‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+’ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+’ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
 
LOCK_SH取得共享锁定(读取的程序)。
LOCK_EX 取得独占锁定(写入的程序。
LOCK_UN 释放锁定(无论共享或独占)。
*/
function writeover($filename,$data,$method="rb+",$iflock=1) 
{ 
    @touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/ 
    $handle=@fopen($filename,$method); 
    if($iflock){ 
        flock($handle,LOCK_EX); 
    } 
    fwrite($handle,$data); 
    if($method=="rb+") ftruncate($handle,strlen($data)); 
    fclose($handle); 
}


?>

执行效果

# php auto.php 
2020-04-22 18:10:44 : watch every 3 s
2020-04-22 18:10:47 : watch every 3 s
2020-04-22 18:10:50 : watch every 3 s
2020-04-22 18:10:53 : watch every 3 s
2020-04-22 18:10:56 : watch every 3 s
2020-04-22 18:10:59 : watch every 3 s
2020-04-22 18:11:02 : watch every 3 s
2020-04-22 18:11:05 : watch every 3 s
2020-04-22 18:11:08 : watch every 3 s
2020-04-22 18:11:11 : watch every 3 s
2020-04-22 18:11:14 : watch every 3 s
2020-04-22 18:11:17 : watch every 3 s
2020-04-22 18:11:20 : watch every 3 s
2020-04-22 18:11:23 : watch every 3 s
2020-04-22 18:11:26 : watch every 3 s
2020-04-22 18:11:29 : watch every 3 s
2020-04-22 18:11:32 Start job 
2020-04-22 18:11:32 Job finished. 
2020-04-22 18:11:35 : watch every 3 s
2020-04-22 18:11:38 : watch every 3 s


This entry was posted in Linux, PHP and tagged , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/php-process-watch/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply