0

昨日設定した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++;
}
4

1 に答える 1

0

スクリプトは、cron ジョブを通じて別のユーザーによって実行されている可能性があります。これがあなたの結果に影響するかどうかはわかりませんが、過去に私を悲しませました.

cron コマンドは次のようになります。

sudo su www-data -c "php -q /wocs/email.php"

www-data が正しいユーザーであることを確認してくださいecho get_current_user();。ブラウザから実行して確認できます。

于 2013-01-27T23:44:42.197 に答える