Sziasztok!
Egy fájlt kéne lekezelnem PHP-val, és megszámlálnom a sorait. Nem tudom hogy kezdjek hozzá. c++-ban meg tudom csinálni, csak nem tudom mennyi hasonlóság van a 2 programnyelv közt.
ha írnátok 1-2 jó szót, vagy akár valami olvasnivalót, azt nagyon megköszönném.
- 2304 megtekintés
Hozzászólások
http://www.google.com/#q=line+count+php
a google birodalom ellenzőinek:
- A hozzászóláshoz be kell jelentkezni
köszönöm:)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
igy van, file()
t
- A hozzászóláshoz be kell jelentkezni
no, az ilyen programozói hozzáállás miatt swappol be a hello world egy 3+ éves hardveren :)
- A hozzászóláshoz be kell jelentkezni
a nyitobol nem ugy tunt, mintha 3 gigas file-okat akarna szamolgatni.
t
- A hozzászóláshoz be kell jelentkezni
<?php
print count(file("foo.txt"));
- A hozzászóláshoz be kell jelentkezni
most próbáld ki ezt egy böszme nagy fájlon. mondjuk, egy 8 gigás apache logon :)
nehogy már a sorok megszámolása miatt RAM-ba kelljen tenni a fájl összes adatát...
- A hozzászóláshoz be kell jelentkezni
Megoldas? Persze, fopen, fgets, fclose.
Amugy gyanitom, hogy a file sorainak megszamolasa csak egy lepes, bar a "lekezelni" nem tul informativ.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni
Tipikus PHP-Pistikes megoldas! ;^)
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
a php kodot igy oldanam meg en is, es inkabb magat a php-t irnam at/optimalizalnam.
szerk: Akkor maskor is jo lenne ez a megoldas :b
szerk2: Egyebkent meg ha 8gigas a file, akkor legyen C-ben a program, es fusson cgi-kent...
- A hozzászóláshoz be kell jelentkezni
szerk2: Egyebkent meg ha 8gigas a file, akkor legyen C-ben a program, es fusson cgi-kent...
Es attol gyorsabb lesz a Disk IO?
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
Hogyan optimalizálod a PHP file() metódusát?
Egyébként én így oldanám meg:
(int)system("wc -l "+$filename);
Nem hiszem, hogy bármilyen php kód gyorsab tud lenni egy C-ben írt parancssoros programnál.
- A hozzászóláshoz be kell jelentkezni
Igen, ez jó, és működik linuxon. De nem mondta hogy linuxos szerveren akarja futtatni.
- A hozzászóláshoz be kell jelentkezni
Megy FreeBSD-n is :)
- A hozzászóláshoz be kell jelentkezni
És a fenti cucc windowsos php-n is menni fog, ugye?
- A hozzászóláshoz be kell jelentkezni
... meg minden olyan PHP-n, ahol nem tudsz tetszőleges külső rendszerhívást csinálni security okokból...
- A hozzászóláshoz be kell jelentkezni
8 gigás logfájlokhoz hozzáférni nem security hole?
- A hozzászóláshoz be kell jelentkezni
Az 2 kulon dolog hogy a php kod hozzafer, meg hogy barki hozzafer aki vegrehajtja nalad a system("rm -rf /") parancsot.
- A hozzászóláshoz be kell jelentkezni
Mellesleg ez csak akkor működik, ha a php kód root jogokkal fut. De ebben az esetben meg is érdemli a rendszergazda.
- A hozzászóláshoz be kell jelentkezni
Minden fajlt torol amit tud, ez altalaban sokkal tobb mint amit szeretnel elvesziteni. De ez egy idiota pelda volt a helyzet sulyossagat demonstralando.
Ilyet senki nem csinal, valojaban gyorsan sok1000 emailt kezdenel el kuldeni aranyorakrol meg viagrakrol.
- A hozzászóláshoz be kell jelentkezni
Nem tudok elképzelni olyan helyzetet, amikor megérné Windowsra PHP-t rakni, így ezt a lehetőséget nem is vettem számításba.
Közben megnéztem az első google találatot, ott is benne volt ugyanez egy hasonló módon.
- A hozzászóláshoz be kell jelentkezni
facepalm
szerk:
Hint: a system() nem tiltasa php.inibol a legbutabb dolog amit tenni tudsz
- A hozzászóláshoz be kell jelentkezni
"(int)system("wc -l "+$filename);"
lyaly
--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!
- A hozzászóláshoz be kell jelentkezni
Aztán meg arról fog topikot indítani, hogy élesben nem megy a system (mert a rendszergazda letiltotta), mit lehet tenni?? ;)
- A hozzászóláshoz be kell jelentkezni
szábszkrájb
- A hozzászóláshoz be kell jelentkezni
íme a memóriabarát verzió:
function get_lines($filename)
{
$handle=fopen($filename,'r');
while (fgets($handle)) $i++;
return $i;
}
- A hozzászóláshoz be kell jelentkezni
Valószínűleg még barátibb lenne, ha lenne benne egy nyomorúságos fclose is.
- A hozzászóláshoz be kell jelentkezni
egy fokkal igen, de mikor kilép a fügvényből a végrehajtás, akkor a $handle objektum megszünésével lezáródik.
- A hozzászóláshoz be kell jelentkezni
Volt itt már hitvita erről, csak nem találom a topicot, és engem akkor sem győztek meg arról, hogy ez így helyes :)
update: itt a szál
- A hozzászóláshoz be kell jelentkezni