2017-03-26 19 views
5

Mój kod wygląda jak poniżej.Procesor wykorzystuje 100% zasobów i dlatego Kolejka nieudana

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

Powyższy kod tworzy 100 użytkowników i za każdym razem, gdy tworzona jest kolejka do wysyłania powiadomień e-mail. Używam domyślnej kolejki bazy danych.

Mam wspólne konto hostingowe na GoDaddy. Z pewnych powodów użycie procesora osiąga 100. Oto zrzut ekranu.

enter image description here

koniec pętli zatrzymuje się pomiędzy nimi. Poniżej zrzut ekranu po 5 minutach.

enter image description here

Tutaj Mój problem jest: To nie jest w stanie kontynuować tworzenie 100 użytkowników. Robię to, aby przetestować przykładową implementację kolejki, w której wielu użytkowników wysyła żądanie rejestracji. Czy robię coś złego?

Odpowiedz

0

zrobiłem ustaleń i stwierdził, że powinienem przejść do VPS zamiast dzielonego hostingu. oto ładne i tanie plany GoDaddy. https://in.godaddy.com/hosting/vps-hosting

enter image description here

+0

Rozważ skorzystanie z interfejsu API poczty HTTP, takiego jak Mail Gun. Jest bezpłatny i nie będzie podlegał ograniczeniom GoDaddy. Laravel ma również wbudowaną obsługę tego. – QuickDanger

0

Godaddy ma limit zasobów, z których można korzystać. Jeśli przejdziesz przez to, zabije procesy na ssh.

Granice są dostepne here

Spróbuj uruchomić proces php z innego nice parametru.

To co mam zrobić, gdy trzeba użyć polecenia rzemieślnik, który nie zużywają dużo zasobów ..

+0

W rzeczywistości chodzi o rejestrację użytkownika, która odbywa się w tym samym czasie przez 100 użytkowników. Jak mogę ustawić priorytet? Jest to ta sama praca wykonywana przez 100 użytkowników. – Pankaj

5

Jak wspomniano powyżej, GoDaddy ma dużo ograniczeń zasobów. Możesz wysłać tylko 100 e-maili na godzinę, co słyszałem.

To również nie za jednym razem. Jeśli wykryje, że wysyłasz dużo e-maili, Twój proces jest zablokowany.

Zamiast tego można ustawić kolejkę wiadomości do wysłania 1 na 20 sekund lub 30 sekund. Pomoże to utrzymać zasoby w ograniczonym zakresie, a twoje e-maile będą wysyłane do klientów bez żadnych problemów.

Można do tego celu użyć funkcji uśpienia.

+0

Czy możesz udostępnić kod, aby ograniczyć 10 wiadomości na 10 sekund? – Pankaj

+0

Możesz zajrzeć do funkcji spania [tutaj] (http://php.net/manual/en/function.sleep.php) – Tanay

+0

Gdzie wspomnieć o tym kodzie funkcji spania? – Pankaj