【发布时间】:2011-02-18 16:00:22
【问题描述】:
我想在我的 php 应用程序中添加一个部分来添加/删除计划任务。
类似于他们在 vBulletin 论坛中使用的东西。
有没有人知道他们使用什么?他们是在使用 cron 作业,还是有一些自定义的工作。
谁能指导我如何完成类似的事情,基本上我只想让我的脚本添加或删除 cron 作业/计划任务。
我不想使用,例如 cPanel Cron 界面,我想在我的脚本中完成此操作。
非常感谢任何帮助。
【问题讨论】:
我想在我的 php 应用程序中添加一个部分来添加/删除计划任务。
类似于他们在 vBulletin 论坛中使用的东西。
有没有人知道他们使用什么?他们是在使用 cron 作业,还是有一些自定义的工作。
谁能指导我如何完成类似的事情,基本上我只想让我的脚本添加或删除 cron 作业/计划任务。
我不想使用,例如 cPanel Cron 界面,我想在我的脚本中完成此操作。
非常感谢任何帮助。
【问题讨论】:
这是我的解决方案 :-)
命令行示例:
bin/cronman --enable /var/www/myproject/.cronfile --user www-data
点击了解更多:php-crontab-manager
【讨论】:
这是一个 PHP crontab 类:
http://www.kavoir.com/2011/10/php-crontab-class-to-add-and-remove-cron-jobs.html
使用这些方法添加、编辑或删除 cron 作业。
【讨论】:
如果您没有启用exec() 功能,则必须依靠通过某个界面手动设置至少一个 cron 作业,然后在脚本中管理各个作业。
例如我做的是这个
heartbeat.php 每分钟执行一次crontab 并检查是否有任何行(作业)与 time_to_process <= NOW()
crontab 表中加载为特定行定义的类run()方法的接口,我只调用$cronJob->run()使其运行crontab 表处理其重新安排一个很好的例子是重置某些项目的每日浏览量。
作业安排在 2010 年 5 月 1 日 00:00。作业运行后,它会自动安排第二天的工作。
然后,您可以在 PHP 中实现失败作业的自动重置和许多其他功能。
【讨论】:
我相信 vBulletin “伪造” cron 工作。任何访问该页面的用户都会执行代码来检查是否需要运行任何任务。
但是,如果没有用户访问该网站,则不会执行任何 cron 作业,该方法 100% 依赖于页面浏览量。
另外,为了防止在页面渲染后执行 cron 作业的用户延迟页面渲染。
再说一次,这正是我认为正在发生的事情,我自己还没有看过代码。
希望这会有所帮助。
【讨论】:
http://ryanfaerman.com/php-crontab-manager/
是一个 php 类,可让您使用类从 PHP 访问 crontab。
【讨论】: