2017-03-26 1 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의 멋지고 저렴한 계획이 있습니다.

위에서 언급 한 바와 같이 enter image description here

+0

대신 Mail Gun과 같은 HTTP 메일 API를 사용해보십시오. 무료이며 GoDaddy 한도의 영향을받지 않습니다. Laravel은 또한이를 지원합니다. – QuickDanger

0

Godaddy에는 사용할 수있는 리소스의 한계가 있습니다. 만약 당신이 그것을 넘어 서면, 그것은 ssh의 프로세스를 죽일 것입니다.

한계는 here

다른 nice 매개 변수를 사용하여 PHP 프로세스를 실행 해보십시오 avaiable이다입니다.

+0

실제로 이것은 100 명의 사용자가 동시에 발생하는 사용자 등록에 대한 것입니다. 우선 순위를 어떻게 지정할 수 있습니까? 이것은 100 명의 사용자가 수행하는 동일한 작업입니다. – Pankaj

5

https://in.godaddy.com/hosting/vps-hosting는 고대 디는 자원 제한을 많이했다. 한 시간에 100 개의 이메일 만 보낼 수 있습니다.

그 또한 한 번에. 많은 이메일을 보내고 있음을 감지하면 프로세스가 차단됩니다.

대신 20 초 또는 30 초당 1 회 전송할 메시지를 대기열에 넣을 수 있습니다. 리소스를 제한하는 데 도움이되며 전자 메일은 문제없이 고객에게 전송됩니다.

잠자기 기능을 사용할 수 있습니다.

+0

10 초당 10 개의 메시지를 제한하는 코드를 공유 할 수 있습니까? – Pankaj

+0

수면 기능 [here] (http://php.net/manual/en/function.sleep.php) – Tanay

+0

수면 기능 코드는 어디서 볼 수 있습니까? – Pankaj