我正在尝试列出在PHP上运行计划任务的不同方法列表.我的目的是提供一种在PHP中运行计划任务的通用方法.到目前为止,我有:
1)分析网站流量.如果您每天收到770次点击(每2分钟一次点击),并且您安排任务在上午6:00运行,并且访问者在上午5:59请求了一个页面,则运行该任务,因为下一个访问者将平均上午6:01到达.在这种情况下,运行= exec(‘/usr/bin/php -f /home/account/cron.php’).
()只要路径正确,就可以在所有平台上运行.
( – )需要一些CPU电源.
( – )需要exec().
( – )在较小的网站或流量高峰的网站上不准确.
2)以上的改进版本.当用户请求页面并且任务要运行时,在将内容刷新到用户后,请不要使用exec(),而是使用include().
()适用于所有平台.
()没有exec()的.
( – )需要一些CPU电源.
( – )在较小的网站或流量高峰的网站上不准确.
3)运行单独的进程后台,使其以恒定循环运行.提供一个管理界面,让您“开始”和“结束”“服务”.然后它将使用fsockopen()来调用无限运行的.php脚本.它使用sleep()来消耗资源并在时机成熟时唤醒(参见:time_sleep_until()).它可以搜索文件并读取它们以了解何时运行哪些任务.可以创建文件“run-everyday-3.00am”,使调度程序在其中运行代码.
()适用于所有平台.
()没有exec()的.
()可以非常准确(例如,如果它每分钟睡眠一次).
( – )不稳定 – 服务器崩溃完全停止调度程序.
( – )有些主机不喜欢24/7/365 =资源占用的进程?
4)直接在Linux上运行exec(‘crontab’)等.
()这不是资源匮乏.
()是准确的.
( – )exec().
( – )不适用于所有平台.
5)要求cPanel凭证并对其进行POST以创建/管理/删除crons.
()是准确的
()这不是资源匮乏.
( – )安全性差
( – )需要用户详细信息=可用性降低
( – )不适用于所有平台(需要在Windows上不起作用的cPanel).
( – )需要cPanel.
还有其他想法吗?
解决方法:
你提出的几乎所有方法都很难看,尽管大多数方法都有效.
我的丑陋替代方案是在本地计算机上设置cron,该计算机具有互联网连接,可以在几分钟内运行curl命令.
它和你的所有解决方案一样丑陋,但它更可靠.
标签:php,scheduled-tasks 来源: https://codeday.me/bug/20190730/1583771.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。