使用php设置cron作业

时间:2013-08-27 18:14:24

标签: php cron

我正在努力设置一种“通用”的方式来设置cron作业,因为我正在创建一个商业系统,它需要为每个人工作。

这就是我正在做的事情:

<?php
$data = '0 0,12 * * * -q /public_html/currency.php ';
file_put_contents('cron.txt', $data, FILE_APPEND);
exec('sudo crontab cron.txt', $output, $return);
if($return === 0)
{
  echo 'Cron Successful';
  } else {
  echo 'Cron Unsuccessful' . $output;
}
?>

我收到一个错误:Cron UnsuccessfulArray

为什么我收到此错误? cron.txt包含用$data写的所有内容。

2 个答案:

答案 0 :(得分:0)

$output变量作为PHP数组引用传递给exec函数(http://php.net/manual/en/function.exec.php

要将此数组转换为字符串,您可能需要使用print_rhttp://www.php.net/manual/en/function.print-r.php)之类的函数,如下例所示:

if ($return === 0) {
  $message = 'Cron Successful';
} else {
  $message = 'Cron Unsuccessful' . print_r($output, true);
}

正如评论中所建议的那样,出于安全考虑,不建议将Web服务器用户留在sudoers中。

答案 1 :(得分:0)

首先你的问题是:你没有得到你想要的结果,因为你实际执行这个PHP代码的用户没有(并且谢天谢地)也有sudo访问权限。要“修复”这个问题,打开你的shell而不是运行一个简单的:php example.php,运行这个:sudo php example.php。这应该有效。

但是我强烈建议您重新考虑您要解决的问题。我看到你尽可能地自动化(一件好事),也许使用shell脚本来设置你的环境。然后,您甚至可以将该shell脚本存储在git / svn存储库中。