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

CPU is utilizing 100% resource and therefore Queue failed

我的代码如下。

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);
}

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

我在 GoDaddy 上共享了主机帐户。由于某些原因,CPU 使用量达到 100。这是屏幕截图。

最终循环在两者之间停止。以下是 5 分钟后的屏幕截图。

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

Godaddy 确实有您可以使用的资源限制。如果你检查它,它会终止 ssh 上的进程。

限额可用here

使用不同的 nice 参数尝试 运行 php 过程。

当我需要使用确实使用大量资源的 artisan 命令时,我就是这样做的。

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

如上所述,GoDaddy 有很多资源限制。听说一个小时只能发100封邮件

那也不是一次。如果它检测到您正在发送大量电子邮件,您的进程将被阻止。

相反,您可以排队每 20 秒或 30 秒发送 1 条消息。这将有助于限制资源,您的电子邮件将毫无问题地发送给客户。

您可以为此使用睡眠功能。