Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uruchamianie w czasie
Forum PHP.pl > Forum > PHP
Avatarus
Witam
Potrzebuje w skrypcie użyć funkcje która będzie odpalana w czasie.
Na zasadzie że włączamy coś i trwa to np 10 min, licznik odlicza do 00:00 i odpala się skrypt.
Z tym że ważna sprawa, te licznik ma być niezależny od użytkownika który go uruchomił.
Czyli jak taki user zamknie okno przeglądarki, to ten skrypt się wykona.

Zasada podobna jak w grach przez przeglądarkę.

Macie pomysły?
everth
Eeeee

EDIT: @Quantum: Rzeczywiście, kłania mi się czytanie ze zrozumieniem. Teraz dopiero to zobaczyłem :/
vokiel
Np zrobić tabelę harmonogramu, potem cronem pobierać akcje, których czas wykonania właśnie nastał.
Quantum
@everth oj chyba nie smile.gif

while + ignore_user_abort ?
Avatarus
a czy dobrym rozwiązaniem była by tabela z akcjami odroczonymi w czasie i skrypty crona który odpalał by co 1 sec spryt php który zajmowałby się tymi akcjami?
zelu
Cron'a nie odpalisz czesciej niz co minute
thek
Zajedziesz bazę chłopie smile.gif Na temat o jakim piszesz były już tutaj tematy. To się rozwiązuje nieco inaczej. Robisz tabelę z eventami czy jak to chcesz nazwać i ustawiasz nowym akcjom znaczniki czasowe zakończenia akcji. Zwykłe timestamp. User widzi te związane z jego id. Po stronie usera JavaScript odbiera te znaczniki i tworzy z nich timer odliczający. Gdy czas dobiegnie do 0 następuje odświeżenie lub nie dzieje się nic poza napisem Wykonano/Koniec. Dopiero gdy strona zostanie odświeżona wszystko się wykona na serwerze. Dzięki temu nie katujesz bazy niepotrzebnie i nie musisz dbać o idealny harmonogram. Skrypt wykona dopiero wtedy, gdy musi. A jak są walki robione skoro userów jest dwóch? Ano skrypt wykonuje się tylko raz, gdy tylko stronę odświeży pierwszy z nich. Gdy klika drugi to raport i cała akcja już jest w bazie. Tak więc przydaje się w takich sytuacjach znacznik dodatkowy dla danego timestamp który synchronizuje info o tym, czy raport już jest, nie ma go, czy właśnie jest tworzony przez jednego z graczy.

Apropo eventów... Można w mysql 5.x korzystać z mechanizmu eventów jednorazowych zamiast CRONa, ale moim zdaniem dla tego typu zagadnienia to przerost formy nad treścią smile.gif
Avatarus
czyli tabela z eventami,
jak js doliczy do 0 to poprzez ajaxa wywołanie skryptu
jak będzie zamknięte okno przeglądarki to przy refreshu

W sumie proste i skuteczne biggrin.gif
Dziękuje
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.