我昨天设置的cron作业有一个奇怪的问题。我运行了以下CronJob脚本:
0 7 * * * php -q /wocs/email.php
这是指我在下面放置的电子邮件脚本。目标是让它运行调用我的MySQL数据库的脚本,并向用户发送一封电子邮件,说明他们必须签署多少票。当我在phpmyadmin中运行查询时,我得到了正确的结果,当我在页面上回显结果时,它给出了正确的结果。但是今天上午7点,Cron Job通过电子邮件发送了数据库中的每个用户(即使是那些没有任何优秀票证的用户 - 所以他们根本不应该收到任何东西,而且当我测试查询时它们不会出现我自己运行脚本)。他们每次都通过电子邮件发送了十几封电子邮件,并且发送的电子邮件数量不准确,我无法自我复制。
这是代码,当我在浏览器中运行它时,它运行得很好,我唯一一次得到错误就是运行Cron作业时。
$query="
SELECT *, COUNT(*)
FROM job, user
WHERE job.jobs_osuper=user.users_id
AND job.jobs_approverid2 = 0
GROUP BY user.users_id
";
$result=mysql_query($query);
mysql_close();
$num=mysql_num_rows($result);
$conditional1=mysql_result($result,$i,"users_id");
$conditional2=mysql_result($result,$i,"jobs_osuper");
$i = 0;
while($i<$num && $conditional1 == $conditional2)
{
$name=mysql_result($result,$i,"user_fullname");
$email=mysql_result($result,$i,"user_email");
$count=mysql_result($result,$i,"COUNT(*)");
$mailfrom = "from@email.com";
$mailbcc = "bcc@email.com";
$message = "<b>$name,</b><p>You have $count ticket(s) waiting on your approval. <a href='http://url.com'>Click here to review the tickets assigned to you.</a></p>";
mail($email, "Tickets for Approval", $message, "From: $mailfrom\r\nCC: $mailbcc\r\nContent-type: text/html\r\n");
$i++;
}
答案 0 :(得分:0)
您的脚本很可能是由其他用户通过cron作业运行的。我不确定这是否会影响你的结果,但它在过去让我感到悲伤。
你的cron命令看起来像这样:
sudo su www-data -c "php -q /wocs/email.php"
确保www-data是正确的用户 - 您可以通过浏览器中的echo get_current_user();
进行检查。