Portál AbcLinuxu, 10. května 2025 20:29
Zdravím, dělám web k jedné meteostanici a řeším jak zobrazovat u klientů jednotlivá naměřená data. Měřím každou minutu a zobrazuju data až 3 dni zpět, to znamená, že z databáze potřebuji vytáhnout 4320 řádků.
Současný dotaz na databázi je dělán takto:$today_start = date("Y-m-d 0:0:0", strtotime("-2 days")); $today_stop = date("Y-m-d 0:0:0", strtotime("+1 days")); $vysledek = mysql_query("SELECT temp,cas,dew_point FROM mereni WHERE (cas > '$today_start') AND (cas < '$today_stop') ORDER BY cas"); if ($vysledek) { while($zaznam = MySQL_Fetch_Array($vysledek)) { $cas[] = $zaznam[cas]; $tep[] = $zaznam[temp]; $dp[] = $zaznam[dew_point]; } }
Takto načtu databázi několikrát, pro každý graf zvlášť.
1) - Myslím, že bude lepší vyčíst všechno jedním dotazem a pak dále zpracovávat?
2) - Není třeba zobrazit všechny záznamy, ale třeba když minuta = 0,5,10,15,... Jak na to?
Klient má udělán automatický refresh stránky, po minutě aby viděl aktuální údaje. Jeden graf generuji cca 2s bez jiného většího zatížení, což není nejlepší. Raději bych generoval obrázky nějakým scriptem a poté si je klienti jen zobrazovali.
3) - Je vhodné použití cronu na periodické spouštění po minutě?
Taknějak si nejvíce rozumím s PHP, ale dělat v tom script aby byl spuštěný pořád a jen se po minutě probral, není nejlepší.
4) - Existovalo by jiné řešení celé aplikace?
MINUTE(cas) % 5 == 0
.
WHERE cas BETWEEN NOW() AND DATEDIFF(NOW(), interval -2 days)
Header("Cache-Control: must-revalidate"); $offset = 60; $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"; Header($ExpStr);ale hlásí mi to chybu. Mám to hned na začátku, v tagu HEAD.
DATEDIFF(NOW(), interval -2 days)potřebuji něco aby mi to vzalo vždy až do půlnoci, jako mam
date("Y-m-d 0:0:0", strtotime("-2 days"))
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.