当前位置:  开发笔记 > 编程语言 > 正文

PHP:运行预定作业(cron作业)

如何解决《PHP:运行预定作业(cron作业)》经验,为你挑选了5个好方法。

我的网站上有一个网站我想运行一些预定的任务.你会推荐哪些方法来达到这个目的?

到目前为止我已经想到的是在每个页面的顶部都包含一个脚本,然后让这个脚本检查是否是时候运行这个工作了.

这只是我想到的一个简单示例:

if ($alreadyDone == 0 && time() > $timeToRunMaintainance) {
   runTask();
   $timeToRunMaintainance = time() + $interval;
} 

还有什么我应该考虑的还是有比这更好的方法?



1> Armin Ronach..:

这就是cronjobs的用途. man crontab假设您正在运行Linux服务器.如果您没有shell访问权限或无法设置cronjobs,则可以使用免费服务在外部服务器上设置cronjobs并ping您的某个URL.


siteuptime.com可以设置为定期ping您网站上的页面 - 表面上检查正常运行时间,但如果它们位于可访问的脚本中,则可能触发您的工作.最好的方法是设置自己的crontab /预定任务,因此意外的用户访问无法重新运行您的作业

2> 小智..:

我现在正在回答这个问题,因为似乎没有人提到这个确切的解决方案.

在我正在处理的网站上,我们使用cPanel设置了一个cron作业,但不是直接运行PHP解释器(因为我们使用CodeIgniter而且我们的代码被映射到控制器函数,这可能不是'一个好主意)我们正在使用wget.

wget -q -O cron_job.log http://somehost/controller/method

-q是这样wget不会产生任何输出(所以你不会继续收到电子邮件).-O cron_job.log将控制器生成的内容保存到日志文件中(每次都会覆盖,因此不会继续增长).

我发现这是让'正确'的cron工作最简单的方法.



3> David McLaug..:

如果您有cPanel主机,则可以通过Web界面添加cron作业.转到Advanced - > Cron Jobs并使用非高级表单设置cron频率.你想要一个像这样的命令:

/usr/bin/php /path/to/your/php/script.php



4> Kousha..:

你见过ATrigger吗?该PHP库也可以启动没有任何开销创建计划任务.

免责声明:我是他们的团队之一.



5> MrZebra..:

如果你想知道如何从cron实际运行你的PHP脚本,有两个选项:直接调用PHP解释器(即"php /foo/myscript.php"),或使用lynx(lynx http:// mywebsite. com/myscript.php).您选择哪一个主要取决于您的脚本如何配置其环境 - 路径和文件访问权限将根据您是通过shell还是Web浏览器调用而不同.我推荐使用lynx.

一个副作用是每次运行时都会收到一封电子邮件.为了解决这个问题,我让我的cron PHP脚本输出任何内容(如果它们成功完成则不必输出任何内容,甚至不是空格),如果失败则输出错误消息.然后我使用cron的一个小PHP脚本调用它们.这样,如果失败,我只收到一封电子邮件.这与lynx方法基本相同,除了我的shell脚本发出HTTP请求而不是lynx.

将此脚本称为"docron"或其他内容(记住chmod + x),然后在crontab中使用该命令:"docron http://mydomain.com/myscript.php ".如果页面返回某些内容,它会将页面输出通过电子邮件发送给HTML电子邮件.

#!/usr/bin/php
Failed to open file: " . $_SERVER['argv'][1];
}

if ($h != '')
{
        @mail("cron@mydomain.com", $_SERVER['argv']['1'], $h, "From: cron@mydomain.com\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1");
}

?>

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有