2017-03-26 20 views
5

我的代碼如下所示。CPU正在使用100%資源,因此隊列失敗

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.下面是屏幕截圖。

enter image description here

最後循環停止之間。以下是5分鐘後的屏幕截圖。

enter image description here

在這裏,我的問題是:是不是能夠繼續創建100個用戶。我這樣做是爲了測試多個用戶發送註冊請求的示例隊列實現。我做錯了什麼?

回答

0

我做了調查,發現我應該移動到VPS,而不是共享主機。這裏是GoDaddy的優惠和便宜的計劃。 https://in.godaddy.com/hosting/vps-hosting

enter image description here

+0

請考慮使用HTTP郵件API而不是Mail Gun。它是免費的,不會受到GoDaddy限制的影響。 Laravel也有內置的支持。 – QuickDanger

0

Godaddy確實有可用資源的限制。如果你仔細研究它,它會殺死ssh上的進程。

的限制是繳費here

嘗試運行PHP的進程與不同nice參數。

這就是我做什麼,當我需要使用一個工匠命令確實使用了大量的資源..

+0

其實這是關於由100個用戶同時發生的用戶註冊。我如何優先考慮它?這與100位用戶正在進行的工作相同。 – Pankaj

5

如上所述,GoDaddy的有很多的資源限制。我聽到的每小時只能發送100封電子郵件。

那也不是一次。如果它檢測到您正在發送大量電子郵件,則會阻止您的過程。

相反,您可以排隊每20秒或30秒發送1條消息。這將有助於保持資源的限制,並且您的電子郵件無任何問題地發送給客戶。

您可以使用睡眠功能。

+0

你能分享代碼來限制每10秒10條消息嗎? – Pankaj

+0

你可以看看睡眠函數[這裏](http://php.net/manual/en/function.sleep.php) – Tanay

+0

哪裏提到這個睡眠函數的代碼? – Pankaj