【发布时间】:2015-09-28 16:44:34
【问题描述】:
我需要在特定时间运行一次 PHP 脚本。我是这样做的:
shell_exec('echo /usr/local/bin/php /home/xxx/public_html/yyy.php param1 | /usr/bin/at now + 1 minutes');
yyy.php 从$_SERVER['argv'][1] 获取 param1 并根据该值执行其操作。我已经测试了 yyy.php 并且脚本可以正常工作。我遇到的问题是我似乎无法让 at 命令正确执行 PHP 脚本。我尝试了不同的变体,例如:
shell_exec('/usr/local/bin/php /home/xxx/public_html/yyy.php param1 | /usr/bin/at now + 1 minutes');
shell_exec('echo "/usr/local/bin/php /home/xxx/public_html/yyy.php param1" | /usr/bin/at now + 1 minutes');
没有任何作用。我已经仔细检查并确保通过在终端中调用 atq 来排队 at 命令 - 作业出现了。我认为问题在于我如何设置at 命令。有任何想法吗?谢谢!
【问题讨论】:
-
试图从命令行运行这个?
-
@Dagon 是的,我有 - at 命令正在排队(我用 atq 检查过),但 PHP 脚本没有按应有的方式执行
-
@Dagon 如果我这样做
cd /home/xxx && echo "/usr/local/bin/php /home/xxx/public_html/yyy.php param1" | /usr/bin/at now + 1 minutes那么它可以从命令行工作。不过我试过shell_exec('cd /home/xxx && echo "/usr/local/bin/php /home/xxx/public_html/yyy.php param1" | /usr/bin/at now + 1 minutes');还是不行。