Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zwiekszanie zmiennej co dany czas
Forum PHP.pl > Forum > PHP
teilor111
Szukam sposobu w jaki mógłbym zwiększać zmienną np. co określone kilka sekund np na zasadzie:
$zmienna = 5;
$ilosc_sekund = 10;

Nie mam pomysłu jak to roziwązać, pewnie w sposób jak np:

  1. if ( $ilosc_sekund > 0)
  2. $ilosc_sekund -= #ilosc_seknd (co sekunde - tu problem jak to odejmować co sekunde)
  3. else
  4. {
  5. $ilosc_sekund = 10;
  6. #zmienna += 1;
  7. }


Szukałem na forum i znalazłem coś jak set_time_limit() - ale niezbyt wiem jak to użyć na moją potrzebę.
Zmienna pochodzi z bazy danych mysql więc musiałaby być tam też odswieżana.
Myślicie że jest inny, lepszy sposób, aby od razu zwiększać co okreslony czas te zmienną do bazy i wyświetlać na stronie bez refresha?
Niezbyt znam inne języki, piszę w PHP więc jesli ktośby miał pomysł z góry dziękuję za każdą poradę smile.gif
viking
Wybierz coś z tego http://stackoverflow.com/questions/1107785...s-sse-and-comet
Tomplus
Mam nadzieję że bierzesz pod uwagę czas działania skryptu? Czyli odliczanie powinno zacząć się od wyświetlenia strony, a nie od czasu gdzie gdzieś w kodzie zapisana jest funkcja sprawdzająca upływ czasu.

Jak chcesz zrobić odświeżanie treści co 10sekund, to zrób w AJAX, czyli w JS tworzysz licznik odmierzający czas i co 10 sekund wysyłasz żądanie do skryptu PHP czy użytkownik ma dostęp do treści na stronie, jeżeli nie ma, to odświeżasz zawartość HTML, bez refreshu całości

IAmBoskiM
  1. <?php
  2. while (true) {
  3. sleep(5); // ilosc sekund
  4. // a tu kod jaki chcesz
  5. }

Ew mozesz poszukac na forum libevent. To tez sie moze przydac.
Puszy
Cytat(IAmBoskiM @ 14.02.2017, 15:38:14 ) *
  1. <?php
  2. while (true) {
  3. sleep(5); // ilosc sekund
  4. // a tu kod jaki chcesz
  5. }

Ew mozesz poszukac na forum libevent. To tez sie moze przydac.


Nie będzie to działało w pełni poprawnie. Nie uwzględniasz tutaj czasu wykonywania kodu w pętli. Powinieneś sprawdzać przy przejściu pętli ile czasu minęło od początku wykonywania skryptu. Osobiście polecam Pthreads i tam w pętli właśnie z sleep(); uruchamiać każdy wątek, wtedy będzie wszystko działało poprawnie. Pthreads umożliwia asynchroniczne wykonywanie skryptu.
teilor111
Czytałem trochę i wydaje mi się, że powinno to być zrobione w następujący sposób:
zmienna powinna być trzymana jako zmienna sesyjna i tam zwiększać się co jakis czas (nadal nei wiem w jaki sposób ) a do bazy wysyłana co jakiś czas) - bo czas powinien być liczony bez wzgledu na użytkownika tylko czasu servera.
A odejmowanie sekund działałoby na zasadzie sprawdzania daty ostatniego logowania w bazie oraz aktualnej daty i wyliczanej różnicy. - wyświetlanie za pomocą JS.
lecz nie jestem do końca pewien w jaki sposób to napisać ;/
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.