我需要开发一个Web应用程序,让我在特定日期安排任务。 我已经检查了cron jobs,看起来只是用于定期任务。另一方面,我只需要在特定日期安排单个任务而不重复。
我应该使用cron作业吗?
PD:任务是一个PHP脚本。
答案 0 :(得分:1)
我过去这样做的方法是使用cron作业来安排任务,然后使用php脚本中的一些逻辑来确保它只运行一次。
因此,如果您希望脚本仅在下周一运行,则需要创建一个类似
的cron条目1 1 * * mon /my/script/name
这将在每个星期一的1:01运行脚本,而crontab条目仍然存在。
然后,在php脚本中,检查您运行的那一天是否是您想要的那一天。如果没有,请退出剧本。
<?php
// Ensure we're on our target execution date
// Cron is set up to only run this once on Mondays, so we only
// need to check the date
if (date('Y-m-d') != '2014-12-22') {
exit;
}
// Rest of script continues...
一旦作业运行,您可以在闲暇时返回并删除crontab条目。
答案 1 :(得分:1)
根据这个奇妙的tutorial关于Cron的openhift,我知道如何使用它。
取决于您想要达到的准确度。
例如,在.openshift/cron/minutely/certain_date.sh
#!/bin/bash
DATE=`date +%D` #MM/DD/YY
HOUR=`date +%H`
MINUTE=`date +%M`
if [ "$DATE" == "12/21/14" -a "$HOUR" == "23" -a "$MINUTE" == "15" ];then
(
#date >> $CUSTOM_REPO_DIR/certain_date.txt
cd $CUSTOM_REPO_DIR ; #/usr/local/zend/bin/php
$CUSTOM_PHP cron_certain_date.php
)
fi
答案 2 :(得分:0)
您可以创建一个安排任务的PHP脚本,并且他每小时都会使用cron执行:
0 * * * * /the/scheduling/script
该脚本将使用一个文件来存储任务和日期:
date task
date task
...
或者,如果您希望可以在数据库中存储任务,那么管理(删除/修改/添加任务)会更加简单
每小时执行的php调度脚本将检查今天的日期是否与任何任务日期匹配,然后执行今天的相应任务(如果存在)。
如果你想添加任务,你可以选择调度脚本来接收带有GET字段的任务,或者在从命令行调用脚本时将它们作为参数接收(例如:php scheduling_script.php 2014-12- 12 /path/to/thetask.php)