Autor | Zpráva | ||
---|---|---|---|
mattyZEM Profil |
#1 · Zasláno: 8. 5. 2010, 23:19:03 · Upravil/a: mattyZEM
Dobrý večer,
hledám název funkce, s kterou můžu zjistit počet řádků, které vyhovují nějakým podmínkám. Například: <?php // soubor.txt: //1|1273352653|testovací user|mod|Moderátor //2|1112233445|druhý test. us|mod|Moderátor $soubor=file_get_contents("soubor.txt"); $ex=explode("\n",$soubor); $ex2=explode("|",$ex); $cas=$ex2[1]; /* Zjištění počtu řádků kde $cas>TIME()-900 */ ?> Nezná jí někdo? MattyZEM. |
||
Majkl578 Profil |
#2 · Zasláno: 9. 5. 2010, 00:02:06 · Upravil/a: Majkl578
Dost hrozný způsob ukládání (a i čtení) dat.
Použil bych preg_match_all() a array_filter(). preg_match_all('~.+\|(\d+)\|.*?~U', file_get_contents('/tmp/foo'), $matches, PREG_SET_ORDER); $valid = array_filter($matches, function ($item) { return $item[1] < time() - 900; }); var_dump($valid); |
||
mattyZEM Profil |
#3 · Zasláno: 9. 5. 2010, 04:43:41
Majkl578:
„Dost hrozný způsob ukládání (a i čtení) dat.“ Lepší nápad, krom MySQL? :-) |
||
__construct Profil |
#4 · Zasláno: 9. 5. 2010, 08:49:50 · Upravil/a: __construct
mattyZEM:
„Lepší nápad, krom MySQL? :-)“ Majkl578 nemyslel to že to máš uložené v súbore - ale to ako ich máš uložené. Pozri si php funkcie serialize/unserialize a json_encode/json_decode Tým by si sa vyhol tomu nezmyselnému parsovaniu regexpom .. //edit: Ešte ma napadlo, že ani XML by nebol zlý |
||
mattyZEM Profil |
#5 · Zasláno: 9. 5. 2010, 15:40:49
__construct:
„Majkl578 nemyslel to že to máš uložené v súbore“ Já vím, jen jsem upozorňoval, že MySQL nepřichází v úvahu, aby jsme se tu vyhli zbytečným příspěvkům. Dík, ty funkce si prohlédnu. |
||
Majkl578 Profil |
#6 · Zasláno: 10. 5. 2010, 00:18:50
__construct:
„Tým by si sa vyhol tomu nezmyselnému parsovaniu regexpom ..“ Otázkou u mnoho dat pak je, co je rychlejší: regulár nebo unserialize/json_decode pro každý řádek? Myslím si, že regulár, ale benchmark jsem nedělal. mattyZEM: „Lepší nápad, krom MySQL? :-)“ Ano. SQLite. |
||
__construct Profil |
#7 · Zasláno: 10. 5. 2010, 08:12:32
Majkl578:
„pro každý řádek“ Prečo by sa mali dáta serialize/json_encode a potom pridávať na nový riadok - prečo ich nepridať do pola/objektu pri zápise ? „SQLite“ Moc veľký rozdiel v rýchlosti tam nie je (pri malej aplikácii ako má on to už vôbec nepostrehne) a za daľšie pokiaľ sa nemýlim tak SQLite nemá user-management - tak ktorý webhosting Ti to ponúkne ? |
||
Majkl578 Profil |
#8 · Zasláno: 10. 5. 2010, 08:38:49
__construct:
Před interpunkcí se nepíše mezera, nejsme Francouzi. „Prečo by sa mali dáta serialize/json_encode a potom pridávať na nový riadok - prečo ich nepridať do pola/objektu pri zápise ?“ Předtava, že při výběru jednoho řádku budu číst celý tisíciřádkový soubor, prohánět jej přes serialize a pak pracovat s obrovským polem pro mě není moc lákavá. „Moc veľký rozdiel v rýchlosti tam nie je“ Pořád je to ale, řekl bych, lepší řešení. Máš nějaký odkaz na benchmark? „pokiaľ sa nemýlim tak SQLite nemá user-management“ K čemu user-management? To jste všichni tak rozhýčkaní, že na vše potřebujete grafická klikátka? „ktorý webhosting Ti to ponúkne“ Dokonce i ic.cz. Normální web hostingy SQLite nabízí, je to běžné rozšíření (a od PHP 5.3 je dokonce SQLite 3 součástí jádra php). |
||
__construct Profil |
#9 · Zasláno: 10. 5. 2010, 10:01:27
Majkl578:
„Pořád je to ale, řekl bych, lepší řešení. Máš nějaký odkaz na benchmark?“ Neviem v čom je to lepšie riešenie (nemáš nejaký článok .. ?) V niečom je lepší SQLite - v niečom MySQL .. http://polepos.sourceforge.net/results/PolePosition.pdf „user-management? To jste všichni tak rozhýčkaní, že na vše potřebujete grafická klikátka?“ Sorry, ale user-management je definovanie práv užívateľov (nie grafické rozhranie) .. preto som sa pýtal ktorý hosting to ponúka .. Som zvedavý ako to má IC.cz nastavené (pokiaľ teda ten user-management ako som čítal naozaj SQLite postráda .. ) |
||
mattyZEM Profil |
#10 · Zasláno: 11. 5. 2010, 14:11:33 · Upravil/a: mattyZEM
__construct:
„pri malej aplikácii ako má on to už vôbec nepostrehne“ To bych si netroufal tvrdit... |
||
Časová prodleva: 14 let
|
0