Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja Sleep, Zamiast corn
xamrex
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 1
Dołączył: 10.08.2007

Ostrzeżenie: (0%)
-----


Witam. Ostatnio napisałem skrypt, który dodaje newsy co 3 dni o 12.00
Oczywiście musiałem dodać to do crona.
Jednak nie działa to tak jak chce.

Zauważyłem, że w PHP jest ciekawa funkcja SLEEP.
Chciałbym dowiedzieć się jakie ona ma wady.
Jeśli dałbym taką pętlę
  1. for ($i, $i<99, $i++){
  2. mysql_query(insert into tabela values $wartosc);
  3. sleep(259200);}

Czy działało by to podobnie do crona? (zakładając, że uruchomiłbym skrypt o 12.00)
Jeśli $wartość jest pobierana z pliku to czy gdy w czasie pracy skryptu podmienię plik i zmienię treść zmiennej wartość to czy PHP będzie wrzucać do mysql wartość która jest podana w czasie uruchomienia skryptu czy tą nową?

Ten post edytował xamrex 18.08.2010, 14:40:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Owszem... Można ustawiać czas wykonania na 0, ale tylko gdy możesz go modyfikować poprzez dyrektywy lub funkcje php. A przecież nie wszystkie hostingi na to pozwalają tak jak nie na wszystkich jest dostępny cron, albo ma on limity w stylu raz na ileś minut.
To co wspomniał zegarek jest prawdą, ale tylko w przypadku windowsa i znów manual tutaj wyjaśnia to. Jedynie windows tak reaguje, że nie liczy czasu w uśpieniu do całkowitego czasu wykonywania. Najbezpieczniejszy wariant to użycie crona, a jeśli działania mają być częstsze niż minuta, to wspomniane uruchamianie skryptu i jego kontrola poprzez cron.
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(thek @ 19.08.2010, 00:19:17 ) *
To co wspomniał zegarek jest prawdą, ale tylko w przypadku windowsa i znów manual tutaj wyjaśnia to. Jedynie windows tak reaguje, że nie liczy czasu w uśpieniu do całkowitego czasu wykonywania...
sprostowanie: pisałem ale inaczej - właśnie to w Windowsie czas uśpienia jest wliczany do całkowitego czasu wykonywania, na innych systemach nie...

przykład: na linux'ie maksymalny czas wykonywania skryptu wynosi 30s i nie mamy możliwości zmieniania tej wartości, skrypt wykonałby się w ułamku sekundy ale potrzebujemy, by pewną operację wykonał w dokładnie odliczonym czasie [zastosowanie - np. boty do jakiejś gry np. www], z obliczeń wynika, iż dana akcja ma być dopiero za 2min i 10s [czas ten obliczyliśmy na początku]... przekazujemy funkcji sleep coby reszta skryptu wykonała się po obliczonym czasie [ja preferuję tutaj oderwanie procesu od reszty i inny skrypt mógłby czuwać nad całością]... i reszta operacji jest wykonywana po tym czasie - za błąd było podawane, że skrypt wykonywał się 2min 10sekund i troszkę faktycznego czasu wykonywania skryptu przed i po sleep - podczas gdy w manualu jest wyjaśnione, że czas sleep nie jest błędem a błędem jest to, że windows przerwie taką operację wliczając do czasu wykonywania skryptu...

// EDIT
choć raz na pewnym hostingu dokładnie nie było wyjaśnione jak jest liczone obciążenie procesora [w kontekście sleep i manuala], niby przez czas wykonywania skryptu ale jak to tam liczyli nie było napisane - dla pewności zapodałem tam kilka skryptów i zadałem pytania - szczerze sama obsługa była zdziwiona, że skrypt został naliczony na ułamek sekundy podczas gdy wynik na ekranie widzieli co 10s [mimo iż wcześniej wszystko dokładnie tłumaczyłem] - oczywiście wynik był dla mnie satysfakcjonujący i jeszcze raz objaśniałem im, iż to nie jest błąd i podawałem różne linki także do manuala i do bugów [gdzie napisane jest, że to nie jest bug - bugiem jest to jak na windows proces jest przerywany]

Ten post edytował zegarek84 19.08.2010, 10:11:24
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 07:59