我已经使用
设置了玉米作业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并没有在设定的时间内打败。有什么问题?
答案 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管道。