Autor Zpráva
mattyZEM
Profil
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
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
Majkl578:
Dost hrozný způsob ukládání (a i čtení) dat.
Lepší nápad, krom MySQL? :-)
__construct
Profil
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
__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
__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
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
__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
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
__construct:
pri malej aplikácii ako má on to už vôbec nepostrehne
To bych si netroufal tvrdit...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: