如何创建cron作业并在使用php脚本运行后删除作业?

如何创建cron作业并在使用php脚本运行后删除作业?,php,cron,Php,Cron,我想添加基于记录插入时间的cron作业,12小时后,如果一旦函数运行自动删除基于php脚本的cron作业,这是可能的吗 实际上我试过用下面的 $t=shell_exec('echo -e "`crontab -e` 30 9 * * * /path/to/script" | crontab -'); echo $t; 但是,在cli上可用于将cronjob添加到crontab的命令下面,没有任何命令起作用。但正如Gordon之前提到的,一般来说,添加一个cronjob比(每5分钟、每小时等)检

我想添加基于记录插入时间的cron作业,12小时后,如果一旦函数运行自动删除基于php脚本的cron作业,这是可能的吗

实际上我试过用下面的

$t=shell_exec('echo -e "`crontab -e` 30 9 * * * /path/to/script" | crontab -');
echo $t;

但是,在cli上可用于将cronjob添加到crontab的命令下面,没有任何命令起作用。但正如Gordon之前提到的,一般来说,添加一个cronjob比(每5分钟、每小时等)检查作业队列中必须启动的任务更有意义

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "00 09 * * 1-5 echo hello" >> mycron
#install new cron file
crontab mycron
rm mycron

考虑使用作业队列instead@Gordon工作队列是什么意思?cron每五分钟运行一次?不确定cronjobs是否适合此用途。除非你有一个脚本(每分钟运行一次)来处理你的所有任务jobs@kerbholz我已经这样做了,但我怀疑这种方法是否可用?是否直接添加和删除cron?不需要。正如我所说,我认为cronjobs不是用于此目的的合适工具。Cronjobs在后台定期运行。添加作业、等待作业完成然后删除作业(imho)不是cronjobs的目的。按照戈登所说的,并考虑使用作业队列,他们不可能直接添加CRON作业吗?基于sql查询插入时间+12小时,上述方法适用于临时文件“mycron”。您可以在一行代码中实现它(crontab-l2>/dev/null;echo“0009**1-5echo hello”)| crontab-,就像您正在尝试的那样。首先在不使用php的情况下尝试该命令。$t=shell_exec('crontab-l 2>/dev/null;echo“00 09**1-5 echo hello”);echo$t;我尝试了这个,但没有像我说的那样工作-在shell上尝试命令,而不使用php&shell_excec。如果您确定它可以在shell上运行,那么可以测试php插入时会发生什么。在考虑命令本身之前,应该先解决“您的php用户是否能够使用shell_exec”等问题。看这里