qtchb
3.07.2006, 15:53:44
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
3.07.2006, 23:37:08
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 :/
Mi jakoś ta funkcja nie działała.

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
4.07.2006, 11:46:58
Jest raczej tylko w php5 (ale dawno nie widziałem changeloga do php4)
nospor
4.07.2006, 11:48:40
niepotrzebny changelog, wystarczy manual:
http://pl.php.net/manual/pl/function.sleep.phpi juz widac ze juz w php3 byla

ps: i dziala
Cysiaczek
4.07.2006, 11:59:20
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
dadexix
5.04.2008, 22:00:04
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?
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
6.04.2008, 08:01:59
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:)
<?
echo ini_get('max_execution_time')." = max_execution_time - sprawdzamy czy nie ma zablokowanych set_time_limit itd.\n"; ?>
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.