Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczba zwiększająca się co określony czas
Forum PHP.pl > Forum > PHP
master007
Witam,
Mógłby ktoś mi pomóc napisać prosty skrypt wyświetlający liczbę zwiększającą się o "1" co 5 minut? Potrzebne mi do projektu zamowionej witryny a ja sam mam problemy z funkcjami czasowymi w PHP.

Z gory dziekuje za pomoc i pozdrawiam:)
erix
Cytat
a ja sam mam problemy z funkcjami czasowymi w PHP.

Odrób lekcje, bo ten temat będzie wracał dość często.

Cytat
napisać prosty skrypt wyświetlający liczbę zwiększającą się o "1" co 5 minut?

A nie lepiej byłoby cronem wywoływać odpowiedni kod, który zwiększy np. zapisaną w pliku liczbę?
SzamanGN
Na tym forum jest rozwiązanie twojego problemu, ale trzeba poszukać i zaadoptować kod do swoich potrzeb!
Jeden komentarz:
Tego nie robi się w PHP lecz w JS.

Rozwiązanie twojego problemu
master007
Niestety to nie rozwiązuje mojego problemu gdyż zaproponowany przez Ciebie skrypt Java działa, ale wyłączając stronę i po jakimś czasie ją włączając licznik zaczyna odliczanie od nowa. A jak zrobić by skrypt działał cały czas, nawet jak ja sam nie jestem na stronie? I by inni mogli oglądać wciąż najbardziej aktualną wartość i by wszyscy widzieli to samo a nie za każdym razem by skrypt zaczynał zliczać od nowa?
phpion
Możesz również zrobić to inaczej. Przykład: o 8:00 licznik wskazuje 1, a o 8:30 ma wskazywać 10. Wychodzi z tego, że ma być zwiększany 1 jednostkę co 3 minuty. Sprawdzasz więc aktualny czas, odpowiednio go obrabiasz (matematyka się kłania) i uzyskujesz aktualny licznik.
master007
No właśnie chodzi mi by skrypt zwiększał liczbę o 1 co określony czas np. 5 minut. I żeby pracował non-stop i zapamiętywał coraz to nową liczbę. Tylko jak to ładnie do PHP przenieść to nie mam już pojęcia:(
phpion
To może podam prostszy przykład: 8:00 ma 1, 8:59 ma mieć 60. W jaki sposób możesz wziąć aktualną wartość licznika? Patrząc na liczbę minut i dodając 1.
master007
Nie chcę bawić się z godziną. Chodzi tylko by skrypt co 5 minut dopisywał do liczby jeden i wyświetlał najnowszą wartość.
piotrooo89
ja bym zrobił jakąś pętlę i wcisnął w nią sleep. ale rozwiązania phpion'a również jest dobre więc nie rozumiem dlaczego nie chcesz go użyć?
master007
A czy przy rozwiązaniu z godziną licznik nie będzie np o godz. 8 rano każdego dnia zaczynał liczenia od nowa? Chodzi mi o to zeby np o 8 rano jutro była jakaś liczba i zwiększała się co 5 minut o 1, tak aby było że jak wejdę na stronę o 8 rano następnego dnia wartość była odpowiednio zwiększona i by dalej rosła...
piotrooo89
to tą daną możesz zapisać do bazy i trzymać tam i z tamtą dodawać...
master007
ale ta funkcja sleep faktycznie może być dobrym rozwiązaniem:) Tylko jak zrobić by skrypt zapamiętywał wartość i wyświetlał najbardziej aktualną? I by pracował nawet jak nie oglądam tej strony, ale jak już powrócę na nią za jakiś czas to czy ta wartość będzie powiększona o odpowiednią liczbę jednostek od czasu mojej ostatniej wizyty?
piotrooo89
to ja bym się jeszcze na twoim miejscu zainteresował cron'em.
Mize
CRON + http://pl.php.net/manual/en/function.file-put-contents.php + http://pl.php.net/manual/en/function.file-get-contents.php ?
I tak najprościej było by wiliczać to liczbę na podstawie daty i godziny, no ale.
master007
A nie pokusilby sie ktos o napisanie takiego skryptu dla mnie?? Bo ja kompletnie sie gubie w tych datach i tym czasie...
ultra_18
Ja bym to zrobił tak zapisałbym do pliku czas uniksowy do jakiegos pliku od którego zaczelo by sie to odliczanie robi sie to tak:

  1. <?php
  2. $plik = 'plik.txt';
  3. file_put_contents($plik,time());
  4. ?>


Później wczytywałbym wartość tego pliku i odejmował ją od aktualnego czasu dzielił przez 300 (300 sekund) i zakraglal w góre lub co raczej adekwatne w tym przyadku w dół

  1. <?php
  2. $time = file_get_contents($plik);
  3. $czas = floor(time() - $time)/300);
  4. ?>
bartg
Zamist crona masz prostrze odliczanie. Zapisz sobie $start w któej będzie czas kiedy zaczęło się odliczanie a potem porównuj z dzisiejszą datą...
  1. <?php
  2. if(!file_exists('./data.txt'))
  3. {
  4.       file_put_contents('data.txt', time());
  5. }
  6. $min = 5*60; //5 min = 300 sec
  7. $start = file_get_contents('data.txt');
  8. $roznica = time() - $start;
  9. $liczba = round($roznica/$min);
  10. ?>


Działa? Napewno! Sam sprawdzałem smile.gif

Pozdr BartG
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.