[php] update csv do bazy przez php

Odpowiedz Nowy wątek
csh
2007-01-13 11:43
csh

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

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....


szczególnie pomogli mi: johny_bravo, chodnik, J2ME

Pozostało 580 znaków

nav
2007-01-13 12:26
nav

Rejestracja: 16 lat temu

Ostatnio: 2 lata temu

Lokalizacja: Warszawa

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).


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

csh
2007-01-14 14:57
csh

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

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 ??

szczególnie pomogli mi: johny_bravo, chodnik, J2ME

Pozostało 580 znaków

Odpowiedz

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