no message
This commit is contained in:
parent
a3654b33ef
commit
aa809d41d1
@ -147,5 +147,6 @@ EOL;
|
|||||||
|
|
||||||
// Run email queue
|
// Run email queue
|
||||||
$jobs->processEmailQueue();
|
$jobs->processEmailQueue();
|
||||||
|
$jobs->processEmailQueue_bulk(); // 群发
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -436,7 +436,7 @@ final class Cron
|
|||||||
}
|
}
|
||||||
|
|
||||||
DB::beginTransaction();
|
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) {
|
if (count($email_queues_raw) === 0) {
|
||||||
DB::commit();
|
DB::commit();
|
||||||
@ -453,21 +453,21 @@ final class Cron
|
|||||||
if (Tools::isEmail($email_queue['to_email'])) {
|
if (Tools::isEmail($email_queue['to_email'])) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (isset($email_queue['type']) && $email_queue['type'] == "bulk") {
|
// if (isset($email_queue['type']) && $email_queue['type'] == "bulk") {
|
||||||
Mail::send_bulk(
|
// Mail::send_bulk(
|
||||||
$email_queue['to_email'],
|
// $email_queue['to_email'],
|
||||||
$email_queue['subject'],
|
// $email_queue['subject'],
|
||||||
$email_queue['template'],
|
// $email_queue['template'],
|
||||||
json_decode($email_queue['array'])
|
// json_decode($email_queue['array'])
|
||||||
);
|
// );
|
||||||
} else {
|
// } else {
|
||||||
Mail::send(
|
Mail::send(
|
||||||
$email_queue['to_email'],
|
$email_queue['to_email'],
|
||||||
$email_queue['subject'],
|
$email_queue['subject'],
|
||||||
$email_queue['template'],
|
$email_queue['template'],
|
||||||
json_decode($email_queue['array'])
|
json_decode($email_queue['array'])
|
||||||
);
|
);
|
||||||
}
|
// }
|
||||||
|
|
||||||
} catch (Exception|ClientExceptionInterface $e) {
|
} catch (Exception|ClientExceptionInterface $e) {
|
||||||
echo $e->getMessage();
|
echo $e->getMessage();
|
||||||
@ -483,6 +483,68 @@ final class Cron
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 激活订单
|
// 激活订单
|
||||||
/**
|
/**
|
||||||
逻辑:
|
逻辑:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user