Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Usuwanie wielu linii z pliku
Tomek58
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2007

Ostrzeżenie: (0%)
-----


Witam!
Próbuję napisać skrypt do usuwania z pliku wielu linii na raz. Przerobiłem skrypt do usuwania jednej linii, ale strasznie obciąża serwer i czasami wyskakuje błąd o wykorzystaniu limitu czasu. Czy da się to wykonać szybciej, tak aby nie wyskakiwał błąd?

Oto mój skrypt (usuwa 269 linii od góry licząc):

Cytat
<?PHP

$start = 0;
$koniec = 269;

do {

$toDelete = 0;
$lines = file('strona.html');
unset($lines[$toDelete]);
file_put_contents('strona.html', $lines);
$start ++;

} while ($start != $koniec);

?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nowotny
post
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $lines = file('strona.html');
  3. $output = array_slice($lines, 269);
  4. file_put_contents('strona.html', $output);
  5. ?>


A błąd polegał na tym że za każdą iteracją pętli wczytywałeś plik do tablicy na której potem robiłeś operację i z powrotem zapisywałeś plik... i tak 269 razy... operacje odczytu i zapisu do pliku są jednymi z najwolniejszych w PHP... w zasadzie wystarczyłoby przesunąć wczytanie pliku do tablicy przed pętlę... w samej pętli operować na tej jednej tablicy i zapisać już na końcu, po skończeniu pętli...

Ten post edytował nowotny 29.07.2008, 20:20:17
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 01:06