[php] update csv do bazy przez php

0

Chce napisac skrypt w php ktory bedzie automatycznie co dobe aktualizowal baze danych z pliku CSV. Moje polozenie jest takie: umiem sobie napisac CRON-a.
Teraz kwestia skryptu. Zalozmy ze dane w pliku sa jakby w 3 kolumnach poodzielane przecinkami. Czyli powienienem czytac linia po linii ten plik, pozniej explod() ować kazda linie rozdzielajac przecinkiem dane. Nastepnie dane nadpisywac tymi w tabeli?

cos przeoczylem albo moze sie popsuc?
czy jest jakis inny sposob na automatyczne wywolanie skryptu poza CRONem? bo nie jestem pewien czy klient bedzie mial na serwerze crontab....

0

Obsługa pliku csv: http://pl.php.net/fgetcsv
Co do braku crona, mozesz zrobic register_shutdown_function i w tej funkcji zająć się odświeżaniem (oczywiście funkcja powinna sprawdzać kiedy było ostatnie wywołanie).

0

dajmy na to ze chce w tym skrypcie zrobic update danych z plikow do bazy mysql
oto pół schematyczny skrypt

<?php
$row = 1;
$uchwyt = fopen ("test.csv","r");
while (($data = fgetcsv($uchwyt,",")) !== FALSE)  {
   $row++;
            TUTAJ BEDZIE ZAPYTANIE Z WYWOLANIEM GO (ignorujcie bledy): UPDATE tabela SET kolumna1 = $data[0], kolumna2 = $data[1] WHERE kolumna_klucz = $data[0]
   }
}
fclose ($uchwyt);
?>

teraz pytanie: ile takich updatow skrypt wytrzyma bez zwiechy? dane nie sa specjalnie duze, w linii moze jest z 50 znaków gora
czy wykona wiecej czy mniej niz 10.000 odczytow i zapytan?

wiem ze to pytanie trudne bo sporo zalezy od serwera (skrypt jest lekki), ale prosze tez o orientacyjna odpowiedź

====================

a jezeli sie zawiesi do 10.000 rekordow to mam i na to pewien algorytm:
bede updateowal baze co 500 linijek pliku a skrypt sie odswiezy i wezmie kolejna paczke z 500 linijek. Pierwsza 500 pojdzie lekko ale prosze mi powiedziec czy cos takiego ma szanse bytu:

<?php
$row = 1;
$uchwyt = fopen ("test.csv","r");
while (($data = fgetcsv($uchwyt,",")) !== FALSE)  {
   $row++;
            TUTAJ BEDZIE ZAPYTANIE Z WYWOLANIEM GO (ignorujcie bledy): UPDATE tabela SET kolumna1 = $data[0], kolumna2 = $data[1] WHERE kolumna_klucz = $data[0]

if (($row % 500) == 0) header(wywolanie skryptu z $_GET rownym linii na ktorym skrypt sie zatrzymal)<font size="4">*</font>

   }
}
fclose ($uchwyt);
?>
  • tylko jak wrocic do linii k*500 ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1