Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Sprawdzanie czy data mineła
krzychu0808
post 10.07.2009, 22:09:19
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Witam... napisałem skrypt który sprawdza czy podana data minęła bo przymierzam się do pisania gry i będą robione upgrade i podaje do bazy data i czas kiedy się kończy dany upgrade. Co 3 minuty będzie się wykonywał się skrypt który będzie sprawdzał wszystkie upgrade robione przez użytkowników i te których czas już miną to będą odpowiednie wpisy do bazy i napisałem sobie sprawdzanie czy czas miną ale nie wiem czy to nie będzie zamulać serwera jak będzie większa ilość operacji. jestem początkujący proszę o wyrozumiałość

  1. <?
  2.    $data = "2009-07-10";
  3.    $obecna_data = date("Y-m-d");
  4.    $dni = (strtotime($data) - strtotime($obecna_data)) / (60*60*24);
  5.  
  6.    $czas = "23:02:13";
  7.    $obecny_czas = date("H:i:s");
  8.    $czasu = (strtotime($czas) - strtotime($obecny_czas));
  9.    
  10.    if($dni<=0 and $czasu<=0) {
  11.        echo "Podana data mineła";
  12.    }
  13.    else {
  14.        echo "Podana data nie mineła";
  15.    }
  16. ?>


Ten post edytował krzychu0808 10.07.2009, 22:11:06
Go to the top of the page
+Quote Post
Ellington
post 10.07.2009, 22:14:56
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


Skorzystaj z funkcji mktime.


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
Kildyt
post 10.07.2009, 22:23:09
Post #3





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Na pewno można ten kod skrócić. Ja generalnie takie czasu zapisuję jako wynik funkcji time(). Nie tracisz wtedy czasu na przeliczanie tylko od razu sprawdzasz.

Jeszcze pytanie: w jaki sposób odpalasz skrypt sprawdzający czy czas minął i wykonujący określone działania?

Ten post edytował Kildyt 10.07.2009, 22:23:28


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 10.07.2009, 22:24:57
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Kildyt @ 10.07.2009, 22:23:09 ) *
Na pewno można ten kod skrócić. Ja generalnie takie czasu zapisuję jako wynik funkcji time(). Nie tracisz wtedy czasu na przeliczanie tylko od razu sprawdzasz.

Jeszcze pytanie: w jaki sposób odpalasz skrypt sprawdzający czy czas minął i wykonujący określone działania?


Skoro będzie się wykonywał to zapewne z cron'a.

Ten post edytował fifi209 10.07.2009, 22:25:14


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Kildyt
post 10.07.2009, 22:28:44
Post #5





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cytat(fifi209 @ 10.07.2009, 23:24:57 ) *
Skoro będzie się wykonywał to zapewne z cron'a.

Nie byłbym tego pewien. Jeżeli dane są potrzebne tylko jednemu graczowi to IMHO lepiej sprawdzać datę przy odświeżeniu strony przez użytkownika. Nie traci się wtedy czasu podczas gdy gracz nie jest aktywny.


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 10.07.2009, 22:30:19
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Kildyt @ 10.07.2009, 22:28:44 ) *
Nie byłbym tego pewien. Jeżeli dane są potrzebne tylko jednemu graczowi to IMHO lepiej sprawdzać datę przy odświeżeniu strony przez użytkownika. Nie traci się wtedy czasu podczas gdy gracz nie jest aktywny.


Napisał, że co 3 minuty dla wszystkich użytkowników.

Czytaj uważniej.

Ten post edytował fifi209 10.07.2009, 22:30:37


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krzychu0808
post 10.07.2009, 22:34:43
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


tak cronjob
a co do tego mktime to ja muszę chyba podstawić do niego aktualny czas i datę , później postawić do niego jaką chce datę i odjąć... chyba że źle chce stosować mktime
mktime ( int godzina, int minuta, int sekunda, int miesiąc, int dzień, int rok [, int letni/zimowy] )

coś takiego questionmark.gifquestionmark.gif
  1. <?php
  2. $a = mktime (23,29,0,07,10,2009);
  3. $b = mktime (23,28,0,07,10,2009);
  4. $c = $a - $b;
  5. ?>


Ten post edytował krzychu0808 10.07.2009, 22:40:51
Go to the top of the page
+Quote Post
Kildyt
post 10.07.2009, 22:43:06
Post #8





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cytat(krzychu0808 @ 10.07.2009, 23:34:43 ) *
tak cronjob
a co do tego mktime to ja muszę chyba podstawić do niego aktualny czas i datę , później postawić do niego jaką chce datę i odjąć... chyba że źle chce stosować mktime
mktime ( int godzina, int minuta, int sekunda, int miesiąc, int dzień, int rok [, int letni/zimowy] )

Dalej będę stał przy swoim. Nie lepiej zapisać time() do bazy i na nim operować? Przy większej ilości użytkowników te ułamki sekund mogą zaważyć na całości - zgodnie z "grosz do grosza, a będzie kokosza".

Cytat(fifi209 @ 10.07.2009, 23:30:19 ) *
Napisał, że co 3 minuty dla wszystkich użytkowników.

Czytaj uważniej.
Masz rację, zwracam honory. Nie denerwuj się tak. winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
krzychu0808
post 10.07.2009, 22:46:41
Post #9





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Jestem początkujący nie rozumiem o co ci chodzi z tym time() do bazy

Sorki manula nie boli tongue.gif już wiem smile.gif

Ten post edytował krzychu0808 10.07.2009, 22:48:31
Go to the top of the page
+Quote Post
Fifi209
post 10.07.2009, 22:47:41
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Kildyt @ 10.07.2009, 22:43:06 ) *
Dalej będę stał przy swoim. Nie lepiej zapisać time() do bazy i na nim operować?

Co łatwości operowania, faktycznie time() będzie dobrym pomysłem.

Cytat(Kildyt @ 10.07.2009, 22:43:06 ) *
Przy większej ilości użytkowników te ułamki sekund mogą zaważyć na całości - zgodnie z "grosz do grosza, a będzie kokosza".

Jeżeli będzie mu do czegoś innego potrzebny ten czas np. będzie go gdzieś wyświetlał to na jedno wyjdzie.

Cytat(Kildyt @ 10.07.2009, 22:43:06 ) *
Masz rację, zwracam honory. Nie denerwuj się tak. winksmiley.jpg


Nie denerwuje się.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krzychu0808
post 10.07.2009, 22:50:22
Post #11





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


W sumie z tej samej tabeli będą odczytywane te jego upgrade ile pozostało dni,minut,sekund do końca... robie do tego osobną tabele bo będzie kolejkowanie
Go to the top of the page
+Quote Post
Kildyt
post 10.07.2009, 22:51:22
Post #12





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cytat(krzychu0808 @ 10.07.2009, 23:46:41 ) *
Jestem początkujący nie rozumiem o co ci chodzi z tym time() do bazy
Ja też jestem początkującym, ale się tym nie chwalę. tongue.gif

Zamiast:
  1. <?
  2.   $data = "2009-07-10";
  3.   $obecna_data = date("Y-m-d");
  4.   $dni = (strtotime($data) - strtotime($obecna_data)) / (60*60*24);
  5.  
  6.   $czas = "23:02:13";
  7.   $obecny_czas = date("H:i:s");
  8.   $czasu = (strtotime($czas) - strtotime($obecny_czas));
  9.  
  10.   if($dni<=0 and $czasu<=0) {
  11.       echo "Podana data mineła";
  12.   }
  13.   else {
  14.       echo "Podana data nie mineła";
  15.   }
  16. ?>

Zrobiłbym:
  1. <?php
  2. $data = '242342134234'; //zapisany time() podczas akcji i ew. dodanie do niego potrzebnych sekund
  3.  
  4. if (time() > $data)
  5.   echo 'Podana data minęła';
  6. else
  7.   echo 'Jeszcze nie';
  8. ?>


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 10.07.2009, 22:53:21
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Kildyt @ 10.07.2009, 22:51:22 ) *
Zrobiłbym:
  1. <?php
  2. $data = '242342134234'; //zapisany time() podczas akcji i ew. dodanie do niego potrzebnych sekund
  3.  
  4. if (time() > $data)
  5.   echo 'Podana data minęła';
  6. else
  7.   echo 'Jeszcze nie';
  8. ?>


Właśnie o to chodzi, tylko że $data w tym przypadku byłaby wyciągana z bazy.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krzychu0808
post 10.07.2009, 22:56:41
Post #14





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


Właśnie już to pisałem czy o to wam chodzi.. Dzięki za info
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: 15.05.2025 - 05:24