Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Opóźnienie wykonania części kodu
-Mat00-
post 19.07.2012, 11:35:06
Post #1





Goście







Witam,
Chcę opóźnić wykonanie fragmentu kodu na około 3 minuty. Użyłem ob_flush(); flush(); sleep(); ale nie działają. Blokują wczytanie całej strony na 3 minuty i potem wywalają wszystko naraz. Jest mi to potrzebne ponieważ w jednym z cms chcę dodać punkty użytkownikowi np. za przeczytanie artykułu, ale dopiero po 3 minutach od wejścia. Wszystko działa mi idealnie tylko nie wiem jak opóźnić ten czas... może znacie jakieś zupełnie inne rozwiązania ?
Go to the top of the page
+Quote Post
wNogachSpisz
post 19.07.2012, 11:37:56
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


W PHP ciężko coś takiego zrobić bez kombinacji. Jeśli ma działać na każdym tanim hostingu, to tylko CRON. Stwórz w bazie danych specjalną tabelę do któej będziesz wstawiał zadania do wykonania, może być to np. zserializowany obiekt. Potem CRONem odpalasz taki kod.
Go to the top of the page
+Quote Post
Crozin
post 19.07.2012, 13:54:41
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Samo opóźnienie wykonania kodu Ci nic nie da. Bo co jeżeli użytkownik wejdzie na stronę, serwer zacznie odliczać trzy minuty, a następnie użytkownik zamknie okno przeglądarki? Musisz nieco inaczej to rozwiązać.

1. Użytkownik wchodzi na stronę - w sesji zapisujesz czas tego wejścia.
2. Na stronie wrzucasz skrypt JS, który przy pomocy AJAX-a, przykładowo co 30-60 sekund wysyła do serwera żądanie, którego celem jest jedynie poinformowanie serwera o tym, że użytkownik nadal jest na stronie.
3. Skrypt, do którego wysyłane jest żądanie z punktu 2. zapisuje sobie w sesji informację o czasie ostatniej aktywności. Ponieważ ma dostęp do tych samych danych (zapisanych w sesji) co skrypt z punktu 1. może porównać czy czas ostatniej aktywności, czyli obecny czas, minus czas rozpoczęcia oglądania (nadany w pierwszym punkcie) jest większy bądź równy trzem minutom - jeżeli tak, wykonaj dowolny kod jaki tam potrzebujesz.

Go to the top of the page
+Quote Post
markonix
post 19.07.2012, 15:45:10
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Sposób dobry jeżeli mówimy o własnych podstronach.
Jeżeli chcemy promować cudze strony można pokusić się o ramkę iframe, w której będzie reklamowana strona (100% szerokości).
U góry jakiś pasek z licznikiem choć to już kosmetyka i działanie zbliżone do rozwiązania kolegi choć bez ajax co X sekund tylko jeden po odliczeniu czasu.
Zalecam wspomóc się sesjami aby skrypt był bardziej bezpieczny.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 08:43