PHP Cron作业集但未运行

时间:2016-12-17 07:05:21

标签: php shell url cron crontab

我已经使用

设置了玉米作业
exec('echo -e "`crontab -l`\n* * * * * http://example.com/cron/sendsms.php" | crontab -');

我用

看过了
$output = shell_exec('crontab -l');
echo '<Pre>';
echo $output;
//o/p * * * * * http://example.com/cron/sendsms.php

直到这一切都很好。

如果我运行此网址(http://example.com/cron/sendsms.php)。然后它没有任何错误。

但是cron并没有在设定的时间内打败。有什么问题?

1 个答案:

答案 0 :(得分:0)

据我所知,您的 crontab 包含以下行:

* * * * * http://example.com/cron/sendsms.php

将URL作为shell命令调用,就像您在终端中输入http://example.com/cron/sendsms.php并按 Enter 一样。如果要调用远程PHP脚本,则应使用HTTP客户端,例如

* * * * * wget -qO /dev/null 'http://example.com/cron/sendsms.php'

上面的命令向URL发送HTTP GET请求并将响应打印到空设备(忽略输出的常用方法)。

另外,在 crontab 中添加条目的方式在许多方面都是错误的。

shouldn't be using the shell echo command,请改用printf

使用$(...)进行命令替换而不是后引号,因为a)无法构建嵌套命令变量,并且b)$(...)形式更具可读性。

避免在PHP中使用复杂的shell构造。如果需要复杂的shell构造,则应为shell脚本创建单独的文件。

您可以在proc_open()的帮助下附加 crontab 条目,而无需使用shell管道。