Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porownywanie czasu.
Lerno
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 16.03.2004

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


Zrobilem taki skrypcik ktory ma na celu porownywanie ostatniego czasu modyfikacji pliku z obecnym i co 20 sek aktualizuje dane z serwa. Robie to w ten sposob:
[php:1:088fac97b4]<?php
$zapis_danych = "zapis.txt";
$delay = 20; //w sekundach
///////////Czas lecacy w sekundach////////
$curr_time = time();
$time = date("G:i:s", $curr_time);
$t = explode(":", $time);
$czas = ($t[0]*3600)+($t[1]*60)+$t[2];
echo '<br>Current sec: ' . $czas;

//////////Czas ost. modyf. pliku w sek///////
$mod_time = @filemtime($zapis_danych);
$mod = date("G:i:s", $mod_time);
$t = explode(":",$mod);
$mod_pliku = ($t[0]*3600)+($t[1]*60)+$t[2];
echo '<br>Modification time: ' . $mod_pliku;

/////porownanie/////
$wynik = $czas - $mod_pliku;
echo '<br />Wynik roznicy: ' . $wynik;

if($wynik>$delay){
?>[/php:1:088fac97b4]

Problem jednak pojawia sie o 24:00 biggrin.gif Potem zaczyna zwracac ujemne wyniki no i sila rzeczy wynik jest zawsze mniejszy od delaya wiec dane sa czytane z pliku, nie sa juz aktualizowane. Ktos moglby pomoc mi rozwiazac ten problem, badz zasugerowac lepszy test "starosci" pliku w celu jego ew. updatu?

Z gory thx.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




jeśli chodzi tylko o porównywanie czasu, znacznie lepiej jest korzystać z czasu w formacie unixtime, czyli data w sekundach.

[manual:3e9675a79a]time[/manual:3e9675a79a]()


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
FiDO
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Niepotrzebnie kombinujesz.. time() zwraca czas w sekundach od Unix Epoch (umowna data 01.01.1970), filemtime() tez zwraca czas w tej samej postaci. Wiec jesli je odejmiesz to otrzymasz roznice w sekundach i to bez wzgledu na to czy jest 24:00 czy tez nie smile.gif
A i przy okazji kod Ci sie znacznie skroci...
[php:1:2b6cbf6b64]<?php
$zapis_danych = "zapis.txt";
$delay = 20; //w sekundach

$curr_time = time();
$mod_time = @filemtime($zapis_danych);
$wynik = $czas - $mod_pliku;
echo '<br />Wynik roznicy: ' . $wynik;

if($wynik>$delay){
?>[/php:1:2b6cbf6b64]


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Lerno
post
Post #4





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 16.03.2004

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


Hehe, no niby tak... solidnie przekombinowalem biggrin.gif

I komu tego punkcika dodac? Rzut moneta?

Tak powaznie to dzieki smile.gif
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 Aktualny czas: 19.08.2025 - 23:53