私の Web サイトでは、30 分ごとに Cron ジョブを実行しています。これらの 30 分マークで Web サイトにアクセスしようとすると、500 内部サーバー エラーが発生するか、サイトのページの読み込みに 5 ~ 10 秒かかります。
私は Php を使用しており、私の cron ジョブは Php と MySQL を使用しています。
ウェブサイト全体が遅れないようにするにはどうすればよいですか、または遅れが少なくなるように速くするにはどうすればよいですか?
クロン:
15 分ごとに実行される cron の 1 つ:
<?php
require('functions.php');
global $mysqli;
$select = $mysqli->prepare("SELECT `tkn` FROM `users` ORDER BY `dt` ASC LIMIT 0, 200");
$select->execute();
$select->bind_result($cur_token);
$tokens = array();
while($select->fetch())
{
array_push($tokens, $cur_token);
}
foreach($tokens as $token)
{
$api = Class::Instance($token);
$info = $api->Users->Info();
if(empty($info->error))
{
$info->data->token = $token;
updateUser($info->data);
} else if($info->error->code == 400) {
$update = $mysqli->prepare("UPDATE `users` SET `active` = 0 WHERE `tkn` = ?");
$update->bind_param('s', $token);
$update->execute();
}
}
?>
その他の Cron ジョブ:
<?php
require('functions.php');
global $mysqli;
$select = $mysqli->prepare("SELECT `email`, `username`, `id` FROM `users` WHERE `email` IS NOT NULL AND `email` <> '' AND `credits` < `credits_offered` AND `emailed_credits` = 0");
$select->execute();
$select->bind_result($email, $username, $id);
$users = array();
while($select->fetch())
{
$users[] = array("id" => $id, "email" => $email, "username" => $username);
}
foreach($users as $user)
{
$to = $user['email'];
$subject = '';
$message = "";
$headers = 'From: email@domain.com' . "\r\n" .
'Reply-To: reply@domain.com';
mail($to, $subject, $message, $headers);
$update = $mysqli->prepare("UPDATE `users` SET `emailed` = 1 WHERE `id` = ?");
$update->bind_param('i', &$user['id']);
$update->execute();
$update->close();
}
?>