• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony usupianie zapytania w celu oczekiwania na odpowiednią akcję sleep()

Object Storage Arubacloud
0 głosów
145 wizyt
pytanie zadane 17 kwietnia 2018 w PHP przez kevin Mądrala (5,010 p.)

Witam!

Potrzebuję czegoś co w połowie wykonywania skryptu zatrzyma się na np. 5minut po tych pięciu minutach zostanie sprawdzony warunek i jeżeli jest spełniony to skrypt wykonuje się dalej a jeżeli nie to znowu czeka. Pierwsze co przychodzi do głowy to:

<php

$petla = true;

do
{

 // Pobierz z bazy danych z konkretnej tabli konkretne pole

 if( pole_zostało_wypełnione ) {
     break;
  }

  Sleep(300);

} while($petla);

// dalsze instrukcje

 

Może to nie intuicyjne ale postaram się bardziej wyjaśnić. Powyższy skrypt jest uruchamiany poprzez cron'a ponieważ musi się wykonywać cyklicznie jeżeli warunek nie zostanie spełniony czyli skrypt się zapętli to do bazy zostaje zapisana informacja na ten temat i jeżeli admin się zaloguje to wyskakuje mu komunikat o zapętleniu skryptu admin wpisuje odpowiednie dane do pola i i skryp wykrywa zapis do tego pola i pracuje dalej. Wiem że po co ma czekać i się zapętlać skoro może wykonać się dopiero jak admin uzupełni pole ale czy taka sytuacja jest możliwa do wykonania ? Nie wiem dlaczego Sleeep nie działa poprawnie, tzn. przykładowy kod:

<php

Sleep(2);
echo "a<br/>";
Sleep(2);
echo "a<br/>";
Sleep(2);
echo "a<br/>";
Sleep(2);
echo "a<br/>";
Sleep(2);
echo "a<br/>";

W rezultacie powinienem co dwie sekundy otrzymywać literkę a na ekranie a otrzymuję wszystkie po zsumowaniu czasów. Uruchamiać przykładu z Sleep z crona nie próbowałem.

Sprawa kolejna to czy takie zapętlenie skryptu niemożliwi cronowi wykonanie innych zadań ?

1 odpowiedź

0 głosów
odpowiedź 17 kwietnia 2018 przez CzikaCarry Szeryf (75,340 p.)

W rezultacie powinienem co dwie sekundy otrzymywać literkę a na ekranie a otrzymuję wszystkie po zsumowaniu czasów.

Nie, nie powinieneś. Funkcja sleep usypia tylko backend, gdy serwer http dostanie odpowiedź od PHP, dopiero wtedy wysyła to do klienta.

Możesz dokładniej objaśnić dlaczego potrzebujesz sleepa? Bo nie do końca rozumiem. Po prostu możesz odpalać skrypt 5 minut później. Objaśnij dokładnie, nikt Ci tutaj nic nie ukradnie :) 

Podobne pytania

+1 głos
1 odpowiedź 163 wizyt
pytanie zadane 22 stycznia 2022 w PHP przez kubekszklany Gaduła (3,190 p.)
0 głosów
1 odpowiedź 197 wizyt
0 głosów
2 odpowiedzi 1,861 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Michał Biernacki Użytkownik (670 p.)

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...