源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php脚本守护进程原理与实现方法详解

  • 时间:2020-05-18 05:39 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php脚本守护进程原理与实现方法详解
本文实例讲述了php脚本守护进程原理与实现方法。分享给大家供大家参考,具体如下: [b]思路:[/b] 1. while 循环,若当前没有数据要操作可以休眠; 2. crontab 脚本每隔固定时间段执行该脚本,执行时先检测是否已在执行,若无 执行,有则 跳过。 3. nohup  后台执行 4. flock -xn  加锁 [b]实例:[/b] 要执行代码:index.php
<?php
set_time_limit(0);
//死循环
while(1) {
  $message = '1111111' . "\n";
  error_log($message);
  sleep(5);
}
#/tmp/lock/test1.lock 为当前进程要锁定的文件,不同的进程配置不同的锁文件,该文件会自动创建
* * * * * flock -xn /tmp/lock/test1.lock -c 'nohup php index.php >> /php/test.log 2>&1 &'
* * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log'

在写好的php脚本。为防止守护进程内存溢出,建议定期检测内存占用。 将以下代码放到业务脚本中:
if(memory_get_usage()>100*1024*1024){
  exit('内存溢出');//大于100M内存退出程序,防止内存泄漏被系统杀死导致任务终端
}

[b]注意:[/b] nohup 任务查看与关闭方法: [b]关闭:[/b]
//方法一:
ps -e | grep commend
kill -9 pid
//方法二:
fg %n  //n为jobs命令查看的进程号

[b]查看:[/b]
//查看后台进程
jobs

[b]原理:[/b] 使用linux flock 文件锁实现任务锁定,解决冲突 [b]格式:[/b]
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command

[b]选项[/b] -s, --shared:    获得一个共享锁 -x, --exclusive: 获得一个独占锁 -u, --unlock:    移除一个锁,通常是不需要的,脚本执行完会自动丢弃锁 -n, --nonblock:  如果没有立即获得锁,直接失败而不是等待 -w, --timeout:   如果没有立即获得锁,等待指定时间 -o, --close:     在运行命令前关闭文件的描述符号。用于如果命令产生子进程时会不受锁的管控 -c, --command:   在shell中运行一个单独的命令 -h, --help       显示帮助 -V, --version:   显示版本 运行一个php文件,文件锁使用独占锁,如果锁定则失败不等待。参数为-xn * * * * * flock -xn /tmp/mytest.lock -c 'php /home/fdipzone/php/test.php >> /home/fdipzone/php/test.log' 这样当任务未执行完成,下一任务判断到/tmp/mytest.lock被锁定,则结束当前的任务,下一周期再判断。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/506.htm]PHP进程与线程操作技巧总结[/url]》、《[url=http://www.1sucai.cn/Special/495.htm]PHP网络编程技巧总结[/url]》、《[url=http://www.1sucai.cn/Special/348.htm]PHP基本语法入门教程[/url]》、《[url=http://www.1sucai.cn/Special/623.htm]PHP数组(Array)操作技巧大全[/url]》、《[url=http://www.1sucai.cn/Special/47.htm]php字符串(string)用法总结[/url]》、《[url=http://www.1sucai.cn/Special/84.htm]php+mysql数据库操作入门教程[/url]》及《[url=http://www.1sucai.cn/Special/231.htm]php常见数据库操作技巧汇总[/url]》 希望本文所述对大家PHP程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部