no message

This commit is contained in:
hellcat 2025-06-29 18:13:58 +08:00
parent a3654b33ef
commit aa809d41d1
2 changed files with 73 additions and 10 deletions

View File

@ -147,5 +147,6 @@ EOL;
// Run email queue
$jobs->processEmailQueue();
$jobs->processEmailQueue_bulk(); // 群发
}
}

View File

@ -436,7 +436,7 @@ final class Cron
}
DB::beginTransaction();
$email_queues_raw = DB::select('SELECT * FROM email_queue LIMIT 1 FOR UPDATE SKIP LOCKED');
$email_queues_raw = DB::select('SELECT * FROM email_queue where `type` is NULL LIMIT 1 FOR UPDATE SKIP LOCKED');
if (count($email_queues_raw) === 0) {
DB::commit();
@ -453,21 +453,21 @@ final class Cron
if (Tools::isEmail($email_queue['to_email'])) {
try {
if (isset($email_queue['type']) && $email_queue['type'] == "bulk") {
Mail::send_bulk(
$email_queue['to_email'],
$email_queue['subject'],
$email_queue['template'],
json_decode($email_queue['array'])
);
} else {
// if (isset($email_queue['type']) && $email_queue['type'] == "bulk") {
// Mail::send_bulk(
// $email_queue['to_email'],
// $email_queue['subject'],
// $email_queue['template'],
// json_decode($email_queue['array'])
// );
// } else {
Mail::send(
$email_queue['to_email'],
$email_queue['subject'],
$email_queue['template'],
json_decode($email_queue['array'])
);
}
// }
} catch (Exception|ClientExceptionInterface $e) {
echo $e->getMessage();
@ -482,6 +482,68 @@ final class Cron
echo Tools::toDateTime(time()) . ' 邮件队列处理完成' . PHP_EOL;
}
}
public static function processEmailQueue_bulk(): void
{
if ((new EmailQueue())->count() === 0) {
echo Tools::toDateTime(time()) . ' 队列邮件队列为空' . PHP_EOL;
} else {
//记录当前时间戳
$timestamp = time();
//邮件队列处理
while (true) {
if (time() - $timestamp > 299) {
echo Tools::toDateTime(time()) . '队列邮件队列处理超时,已跳过' . PHP_EOL;
break;
}
DB::beginTransaction();
$email_queues_raw = DB::select('SELECT * FROM email_queue where `type` = "bulk" LIMIT 1 FOR UPDATE SKIP LOCKED');
if (count($email_queues_raw) === 0) {
DB::commit();
break;
}
$email_queues = array_map(static function ($value) {
return (array) $value;
}, $email_queues_raw);
$email_queue = $email_queues[0];
echo '发送邮件至 ' . $email_queue['to_email'] . PHP_EOL;
DB::delete('DELETE FROM email_queue WHERE id = ?', [$email_queue['id']]);
if (Tools::isEmail($email_queue['to_email'])) {
try {
// if (isset($email_queue['type']) && $email_queue['type'] == "bulk") {
Mail::send_bulk(
$email_queue['to_email'],
$email_queue['subject'],
$email_queue['template'],
json_decode($email_queue['array'])
);
// } else {
// Mail::send(
// $email_queue['to_email'],
// $email_queue['subject'],
// $email_queue['template'],
// json_decode($email_queue['array'])
// );
// }
} catch (Exception|ClientExceptionInterface $e) {
echo $e->getMessage();
}
} else {
echo $email_queue['to_email'] . ' 邮箱格式错误,已跳过' . PHP_EOL;
}
DB::commit();
}
echo Tools::toDateTime(time()) . ' 群发邮件队列处理完成' . PHP_EOL;
}
}
// 激活订单
/**