[英]How to proper delay each 100 mails in laravel
如果我有 1000 封電子郵件,我運行的工作會遍歷這 1000 封電子郵件並發送電子郵件。
我本可以有:
$users = User::all();
$count = 0;
$hours = 0;
foreach($users as $user) {
if($count % 100 === 0) {
$hours++;
}
Main::to($user->email)->later(now()->addHours($hours), new MyEmail($user));
$count++;
}
我還沒有對此進行測試,但我想每小時發送 100 封電子郵件,這是正確的方法嗎?
sleep(1);
在這里無濟於事,您的解決方案還可以,請記住前 100 個將延遲一個小時。 Laravel 文檔
此外,正如您所說, MailTrap
在幾秒鍾內只允許 2 封電子郵件,您可以在每100
封郵件中添加幾小時 + 幾秒,這樣100
批中的每個 email 將從 1 到 100 延遲 1 小時 + 秒;
或其他解決方案在queue:work
中使用--sleep=3
參數,這將處理 1 email sleep 3 秒等。
這將在(Redis / 數據庫)中創建一個隊列,取決於您使用的內容,並將在指定的日期時間處理它們。
$users = User::all();
$count = 0;
$hours = 0;
foreach($users as $user) {
if($count % 100 === 0) {
$hours++;
}
Mail::to($user)->later(now()->addHours($hours), new MyEmail($user));
$count++;
}
您應該使用睡眠function,使用隊列發送郵件
$users = User::all();
$count = 0;
$hours = 0;
foreach($users as $user) {
if($count % 100 === 0) {
$hours++;
}
Main::to($user->email)->later(now()->addHours($hours), new MyEmail($user));
$count++;
sleep(1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.