CPU正在使用100%资源,因此队列失败

Pan*_*kaj 5 laravel laravel-5.3 laravel-5.4

我的代码如下.

for($i = 0; $i <= 100; $i++) {
    $objUser = [
        "UserName"      =>  $request["UserName"] . $i,
        "EmailAddress"  =>  $request["EmailAddress"] . $i,
        "RoleID"        =>  RoleEnum::ProjectManager,
        "Password"      =>  $request["Password"],
    ];
    $RegisterResponse = $this->Register->Register($objUser);
    $Data = $RegisterResponse["Data"];                
    $job = (new AccountActivationJob($Data));
    dispatch($job);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了100个用户,每次创建一个队列来发送电子邮件通知.我正在使用数据库默认队列.

我在GoDaddy上共享了托管帐户.由于某些原因,CPU使用率达到100.这是截图.

在此输入图像描述

最后循环停在两者之间.以下是5分钟后的截图.

在此输入图像描述

在这里,我的问题是:它无法继续创建100个用户.我这样做是为了测试多个用户发送注册请求的示例队列实现.我做错了吗?

小智 5

如上所述,GoDaddy有很多资源限制.您只能每小时发送100封电子邮件,这是我所听到的.

那也不是一次.如果它检测到您发送了大量电子邮件,则会阻止您的进程.

相反,您可以将消息排队等待每20秒或30秒发送一次.它将有助于将资源保持在限制范围内,并且您的电子邮件将毫无问题地发送给客户.

您可以使用睡眠功能.


Pan*_*kaj 0

我进行了调查,发现我应该迁移到 VPS 而不是共享主机。以下是 GoDaddy 提供的又好又便宜的计划。https://in.godaddy.com/hosting/vps-hosting

在此输入图像描述