3

我如何以编程方式设置 cron 作业,

我们为我们的项目制作了一个安装程序,在安装时我需要使用 PHP 以编程方式设置一个 cron 作业。

请注意,该项目可以在 LINUX/WINDOWS 上运行,

我怎样才能做到这一点?还是有比 CRON JOB 更好的选择。

我正在使用 Codeigniter(始终欢迎基于原生 php 的解决方案,但如果通过 CI 将非常有帮助)

cron 工作包括

  1. 检查特定表并删除无效数据
  2. 将值从 mailServer 插入 DB
  3. 检查某些文件的可用性。

谢谢。

4

3 回答 3

8

这是一篇很好的文章,用于从 PHP 管理您的 Cron 作业

http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/

此示例包含有关如何从 PHP 编写 Cron 作业的完整描述,该作业可通过带有完整源代码的界面进行管理。

于 2012-11-24T05:09:44.337 回答
2

Cron 是一个用于 linux 的作业调度程序。它不能在 Windows 上工作(除非你开始喜欢 Cygwin 和 etecetera)。如果您必须在系统范围内支持它,跨各种未知系统并且全部使用 PHP(无法按原样安排事情),您可以求助于以下三种使用的解决方案中的任何一种:

来自地面控制的电话
(最好的资源,具体时间,最优雅的解决方案)

  1. 让你自己的机器运行 cron 和 ssh'ing 其他机器来运行命令
  2. 让您自己的机器运行 cron 并访问“秘密 url”的ro 运行命令
  3. 有一个外部服务,比如SetCronJob调用你的“秘密网址”

Random Job Runner
(最容易实现,资源适中)

如果您需要做一些不会直接影响用户在您网站上的行为方式的事情,并且它对时间不敏感(只需要做),您可以求助于以统计概率运行它。

// this will run on average once every 100 page views
if(rand(1, 100)==1) runJobQueue();

最坏
的情况(资源更难)

如果您的工作必须经常完成,因为它会直接影响用户并且它必须满足一些时间安排,您可以保存查询并使用上次运行时间戳更新数据库,并继续检查该工作是否必须重新执行跑

// if has passed 1 hour since last update... re-update it
$result = mysql_query("SELECT `timestamp` FROM job_times WHERE whatever...")
if(mysql_result($result, 2) >= ( now() - 3600)) {
    runJobQueue()
于 2012-11-24T06:09:21.560 回答
0

cron 作业可用于 linux,Windows 中的替代方案是调度任务。 http://support.microsoft.com/kb/308569

于 2012-11-28T10:28:35.663 回答