grzegorzko90
30.04.2009, 12:07:41
Witam. Mam pytanie... jak mam zastosować funkcję explode() jeśli dane, które chcę rozbić na tablice znajdują się w pliku ?
Myślałem ,żeby odczytać dane z pliku i podstawić do zmiennej ale ten plik zawiera "ogromną" ilość linijek. Podrzuci ktoś jakieś rozwiązanie ?
Pozdrawiam.
Grzegorz.
Spawnm
30.04.2009, 12:13:01
sowiq
30.04.2009, 12:15:46
Cytat(grzegorzko90 @ 30.04.2009, 13:07:41 )

ale ten plik zawiera "ogromną" ilość linijek.
Ogromną, to znaczy jaką?
Jeśli plik jest bardzo duży, zamiast
file()" title="Zobacz w manualu PHP" target="_manual używaj
fgets()" title="Zobacz w manualu PHP" target="_manual. Dzięki tej funkcji nie pobierasz do pamięci całego pliku, a tylko kolejne jego linie.
slawny
30.04.2009, 12:25:43
<?php
$lista = file('plik.txt');
foreach ($lista as $linia)
{
//inny kod
}
?>
sowiq
30.04.2009, 12:36:31
@slawny,
a co jeśli plik waży 100MB i jednocześnie otworzy go w ten sposób 500 userów? Autor napisał, że plik jest dosyć spory.
slawny
30.04.2009, 12:56:30
Tak, masz racje napisał że jest dość spory. Ale nie raczył odpisać tobie, jak bardzo....
Jak napisze, że plik ma 100MB to się do tego odniosę, a póki co nie szukaj dziury w całym.
grzegorzko90
30.04.2009, 14:02:45
macie rację, przepraszam nie napisałem wielkości. Plik waży ~ 45 mb. Wydaje mi się ,że to dosyć duża waga. Jak już ktoś pisał jeżeli otworzy go kilka osób serwer może być za bardzo obciążony.
slawny
30.04.2009, 14:23:19
No to tak jak @sowiq pisał użyj fgets.
Ale czy faktycznie będą sytuacje kiedy na tym pliku będzie pracowało kilku userów?
grzegorzko90
30.04.2009, 15:01:55
Hmmm obecnie jest to mało prawdopodobne no ale w przyszłości (wraz z rozwojem projektu) będą takie sytuacje.
Crozin
30.04.2009, 15:54:04
Czy to koniecznie musi być jeden plik tekstowy? Czy nie lepiej byłoby użyć bazy danych, albo chociaż podzielić go na kilka części. Oczywiście o ile istnieje taka możliwość.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.