使用PHP脚本设置Cron作业

时间:2015-12-16 11:11:46

标签: php cron

我是编程的初学者,我试图用几种方式使用PHP脚本设置Cron Job,这是我在互联网上找到的,但我总是遇到一些我自己无法解决的错误: 第一种方法:

fprintf(stdout , "HIGH\n");
bcm2835_gpio_write(PIN, HIGH);
fprintf(stdout , "SLEEP\n");
bcm2835_delayMicroseconds(12);
fprintf(stdout , "LOW\n");
bcm2835_gpio_write(PIN, LOW);
fprintf(stdout , "SLEEP\n");
bcm2835_delayMicroseconds(12);

,但我认为因为'符号而出现错误,我确信很多'符号也不好。

第二种方法:

 exec('echo -e "`crontab -l`* * {$_POST['birthDay']} {$_POST['birthMonth']} * /home/jharvard/vhosts/pset7/public/{$_POST['lastname']}{$_POST['firstname']}.php" | crontab -");

错误是:(!)解析错误:语法错误,第24行/home/jharvard/vhosts/pset7/public/calendar.php中的意外'var'(T_VAR)

第三次尝试:

 echo "* * {$_POST['birthDay']} {$_POST['birthMonth']} * /home/jharvard/vhosts/pset7/public/{$_POST['lastname']}{$_POST['firstname']}.php" | tee -a /var/spool/cron/root

我不知道为什么这个不起作用。我执行

  

crontab -l <​​/ p>

,但它没有显示任何新工作

2 个答案:

答案 0 :(得分:1)

你的第一次尝试遇到了很多问题:

  • 字符串以单引号开头,以double结尾。
  • 将解析以双引号开头的字符串内的变量。因此,如果您使用单引号启动字符串,则变量不会替换为其值。
  • 除非使用反斜杠转义,否则不能在以单引号开头的字符串中使用单引号字符。 (同样适用于双引号)示例:$var = '\'test\''

所以语法上,你的第一次尝试应该是这样的:

exec("echo -e \"`crontab -l`* * {$post['birthDay']} {$post['birthMonth']} * /home/jharvard/vhosts/pset7/public/{$post['lastname']}{$post['firstname']}.php\" | crontab -");

更好的解决方案

据我所知,您可以在用户的​​生日那天做点什么。 一个更好的解决方案是手动创建一个单独的cronjob,每晚运行一个文件,该文件将管理要做什么(包括谁的生日,发送电子邮件等),而不是为每个用户提供cronjob。

答案 1 :(得分:0)

你可以这样做

$command = " * * * * * php PATH_TO_YOUR/some.php ";
exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $result);
var_dump($result);

通过此,您可以添加到www-data的用户crontab新命令,该命令将每分钟运行some.php

有关更多信息,请参阅crontab - http://www.adminschoice.com/crontab-quick-reference,您需要阅读它以了解如何处理* * * * *(负责cronjob运行时)以及如何构建正确的{{} 1}}使用$commandphp和其他脚本