全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

本文实例讲述了php脚本守护进程原理与实现方法。分享给大家供大家参考,具体如下:

思路:

1. while 循环,若当前没有数据要操作可以休眠;
2. crontab 脚本每隔固定时间段执行该脚本,执行时先检测是否已在执行,若无 执行,有则 跳过。
3. nohup  后台执行
4. flock -xn  加锁

实例:

要执行代码: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内存退出程序,防止内存泄漏被系统杀死导致任务终端
}

注意:

nohup 任务查看与关闭方法:

关闭:

//方法一:
ps -e | grep commend
kill -9 pid
//方法二:
fg %n  //n为jobs命令查看的进程号

查看:

//查看后台进程
jobs

原理:

使用linux flock 文件锁实现任务锁定,解决冲突

格式:

flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command

选项

-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相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。


# php  # 守护进程  # PHP实现守护进程的示例代码  # PHP程序守护进程化实现方法详解  # php实现简单的守护进程创建、开启与关闭操作  # PHP守护进程的两种常见实现方式详解  # 分享PHP守护进程类  # 如何写php守护进程(Daemon)  # PHP扩展程序实现守护进程  # PHP守护进程实例  # php万字码出完美守护进程详解  # 下一  # 操作技巧  # 如果没有  # 相关内容  # 不需要  # 感兴趣  # 不受  # 给大家  # 已在  # 更多关于  # 每隔  # 所述  # 该文件  # 若无  # 跳过  # 写好  # 程序设计  # 移除  # 加锁  # 而不是 


相关文章: 小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  自助网站制作软件,个人如何自助建网站?  如何快速完成中国万网建站详细流程?  开源网站制作软件,开源网站什么意思?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  高性价比服务器租赁——企业级配置与24小时运维服务  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何快速生成高效建站系统源代码?  宝塔Windows建站如何避免显示默认IIS页面?  英语简历制作免费网站推荐,如何将简历翻译成英文?  常州企业建站如何选择最佳模板?  如何高效生成建站之星成品网站源码?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  宝塔建站无法访问?如何排查配置与端口问题?  建站主机选购指南与交易推荐:核心配置解析  建站主机与虚拟主机有何区别?如何选择最优方案?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何在IIS7上新建站点并设置安全权限?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何实现建站之星域名转发设置?  制作公司内部网站有哪些,内网如何建网站?  建设网站制作价格,怎样建立自己的公司网站?  免费网站制作appp,免费制作app哪个平台好?  用v-html解决Vue.js渲染中html标签不被解析的问题  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何快速查询域名建站关键信息?  建站之星在线客服如何快速接入解答?  如何快速生成专业多端适配建站电话?  建站主机CVM配置优化、SEO策略与性能提升指南  模具网站制作流程,如何找模具客户?  javascript中对象的定义、使用以及对象和原型链操作小结  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  开心动漫网站制作软件下载,十分开心动画为何停播?  网站制作公司排行榜,四大门户网站排名?  小型网站建站如何选择虚拟主机?  如何快速生成橙子建站落地页链接?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  建站168自助建站系统:快速模板定制与SEO优化指南  如何通过免费商城建站系统源码自定义网站主题与功能?  建站主机服务器选型指南与性能优化方案解析  制作网站公司那家好,网络公司是做什么的?  个人网站制作流程图片大全,个人网站如何注销?  北京专业网站制作设计师招聘,北京白云观官方网站?  高端网站建设与定制开发一站式解决方案 中企动力  定制建站流程步骤详解:一站式方案设计与开发指南  香港服务器网站卡顿?如何解决网络延迟与负载问题? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。