【问题标题】:How to run PHP script at a certain time using at command?如何使用 at 命令在特定时间运行 PHP 脚本?
【发布时间】: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');还是不行。

标签: php linux shell terminal


【解决方案1】:

经过大量工作,这终于对我有用了:

a) CHMOD yyy.php 到 755

b) 在 PHP 脚本中使用shell_exec('cd /home/xxx && echo "/usr/local/bin/php /home/xxx/public_html/yyy.php param1" | /usr/bin/at now + 1 minutes');

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 2021-11-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多