这代码需要优化吗
下面是一个定时任务,半小时执行一次,然后会给用户发送邮件,这块代码有什么地方能提升的,或者优化的?
public function handle()
{
Log::info('order_send_care_mails======================start');
$cur_time = Carbon::now()->format('Y-m-d');
O::where('send_number', '<', 3)->where('expected_time','=',$cur_time)
->chunk(100, function ($result) {
$care_mails = config('care_mails');
foreach ($result as $row) {
$send_number = $row->send_number + 1;
$type = $this->type[$send_number]['type'];
$view_template = 'email.' . $row->lang . '.care.' . $type;
//获取标题
$title = '';
if (isset($care_mails[$row->lang]["{$type}_title"])) {
$title = $care_mails[$row->lang]["{$type}_title"];
}
if (stripos($title, '{{product_name}}') !== false) {
$title = str_replace('{{product_name}}', $row->product_name, $title);
}
//处理内容
$link = [];
if (isset($care_mails[$row->lang]['link'][$row->product_name])) {
$link = $care_mails[$row->lang]['link'][$row->product_name];
if (!empty($row->product_feature) && isset($link[$row->product_feature])) {
$link = $link[$row->product_feature];
}else{
continue;
}
}
if (empty($link['Reached']) || empty($link['Guide']) || empty($link['FAQ'])){
continue;
}
$body = view($view_template, [
'link' => $link,
'name' => $row->name,
'product_name' => $row->product_name,
'version' => $row->version
])->render();
//发送邮件
self::sendmail($row->email, $title, $body, $send_number);
//更新数据
$row->send_number = $send_number;
$row->expected_time = self::getNextExpectedTime($send_number, $row->created_at);
$row->send_time = date("Y-m-d H:i:s");
$row->save();
}
});
Log::info('order_send_care_mails======================end');
}
public function sendmail($email, $title, $body, $send_number)
{
Log::info($email . ' ' . $title);
$form = $this->type[$send_number];
Mail::queue(new \App\Mail\Common\Send($form['email'], $email, $form['name'], $title, $body));
}
推荐文章: