Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sleep() - proste pytanie
Forum PHP.pl > Forum > Przedszkole
qtchb
Witam!

Obczytałem forum, googla i większość kursów, ale nigdzie nie znalazłem odpowiedzi wprost na jedno ważne dla mnie pytanie:

czy stosowanie funkcji sleep() pozwala na ograniczenie obciążenia serwera?
albo inaczej:
czy kiedy parser natrafi w kodzie skryptu na funkcję sleep() to obciążenie serwera jest w czasie sleepu mniejsze?

Pytam bo admin mojego serwera jest starą marudą i jak uruchomię skrypt, ktory wlaśnie pisze, to zaraz będzie płakał.

Prawdopodobnie najlepszym sposobem byłoby uruchamianie skryptu w przeglądarce i używanie refresh w meta tagach, ale to odpada - muszę wykorzystać crona.

Może wyjaśnię jeszcze, że mój skrytp wykonuje zapytania i operacje na bazie danych, a poza tym przenosi dane via xml-rpc na inny serwer.

Z góry dziękuję za odpowiedź (w zasadzie wystarczy mi odpowiedź tak lub nie.
Cysiaczek
Nie wiem na pewno, ale chyba nie. Ta funkcja opóźnia jedynie wykonanie skryptu. Wydaje mi się, że interpreter odnajdując wywołanie tej funkcji po prostu odczekuje sobie ileś tam sekund i dopiero zaczyna działać. Nie wiem, czy na pewno, ale tak wynika z manuala :/
bim2
Mi jakoś ta funkcja nie działała. sad.gif Może w php5 działą? Nie wiem nie używam jej, ale w php4 nie działała (mi) Moim zdaniem poprostu zatrzymuje parser na ilesc sec i po iles secundach leci dalej.
Cysiaczek
Jest raczej tylko w php5 (ale dawno nie widziałem changeloga do php4)
nospor
niepotrzebny changelog, wystarczy manual:
http://pl.php.net/manual/pl/function.sleep.php
i juz widac ze juz w php3 byla smile.gif

ps: i dziala
Cysiaczek
O.o
Pół życia z błędną wizją sleep() aaaa!!!
No ale teraz sobie chociaż poczytam tamtejsze posty. qtchb na php.net sa ciekwe idee uzycia funkcji sleep.
Dzieki nospor smile.gif
dadexix
pozwole sobie rozkopać temat bo po co pisać nowy;)

pytanie mam jedno... czy gdy parser "spi"(używam fukcji sleep) to czas wykonywania skryptu też się zatrzymuje czy nie?

chodzi mi o to by nie przerwało skryptu z powodu limitu czasu... np. skrypt wykonuje się 0.5 sec, w środku skryptu dam sleep(5) (lub usleep(5000000) ) to czas wkonywania będzie 5.5 czy 0.5? jeśli miał bym max_execution_time = np. 3 to czy mi przerwie czy podczas "snu" czas wykonywania też się zatrzymie?smile.gif
isso
Wykonywanie skryptu powinno zostać przerwane ponieważ funkcja sleep działa tak jakbyś utworzył własną funkcję, która będzie liczyła bardzo dziwne rzeczy, a jej wykonanie będzie trwało X sekund... po czym przejdzie do następnych instrukcji...

Funkcja jest opisana jako opóźnienie wykonania, ale nie ma tam mowy o wstrzymaniu maksymalnego czasu wykonywania... wiec powinieneś otrzymać wynik wykonywania równy 5.5 sek przy tych danych, które podałeś.
dadexix
no tak ale patrząc z innej strony jest to nie logiczne bo max_execution_time jest po to by server nie był obciążony przez jeden skrypt za długo a gdy parser "spi" to nie ma obciążenia;)... hmmm sprawdzę to:)
  1. <?
  2. echo "próba jeden\n";
  3. echo ini_get('max_execution_time')." = max_execution_time - sprawdzamy czy nie ma zablokowanych set_time_limit itd.\n";
  4. sleep(3);
  5. echo "próba dwa";
  6. ?>


daje
Kod
próba jeden
2 = max_execution_time - sprawdzamy czy nie ma zablokowanych set_time_limit itd.
próba dwa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.