Cześć,
Mam pytanie - kilka razy w ciągu dnia muszę wykonać aktualizację bazy na serwerze online. Dzieje się to w następujący sposób:
baza offline -> wykonanie 4 plików SQL (każda tabela osobno; tak niestety to musi działać) -> wysyłka na FTP -> import do bazy online
drogę do ftp mam załatwioną. Walczę obecnie z importem. Obecny skrypt wygląda tak:
<?php
$mysql_host = 'localhost';
$mysql_username = '';
$mysql_password = '';
$mysql_database = '';
try
{
$db = new PDO('mysql:dbname='.$mysql_database.';host='.$mysql_host,$mysql_username,$mysql_password);
$sql = implode(array_map(function ($v) {
return file_get_contents($v);
}, glob( __DIR__. "/*.sql")));
$qr = $db->exec($sql);
echo "Import action - 100% successfull";
}
catch (PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
?>
Skrypt ładuje wszystkie pliki do bazy. Minus tego rozwiązania jest taki, że ile razy odświeżę ten skrypt, tyle razy wyniki zostaną załadowane z kolejnymi numerami ID (w pliku zapisane są wszystkie wiersze jako INSERT bez pola ID; pole ID jest wstawione w bazie online z ustawionym AI). Wszystko to generuje masę duplikatów. Wymyśliłem dwa rozwiązania, ale nie bardzo wiem, które jest bardziej optymalne?
-
Nim wykonam powyższy skrypt, wykonam TRUNCATE wszystkich tabel do których ładuję dane. Czy to mocno obciąża serwer/bazę? odświeżenei danych odbywałoby się 5 razy w ciągu dnia (liczba łączna wierszy to na ten moment 3000)
-
Przed wykonaniem ww skryptu, inny skrypt sprawdzi jaka jest najwyższa (ostatnia) wartość pola visit_id dla tabeli_a, pola customer_id dla tabeli_b, product_id dla tabeli_c oraz size_id dla tabeli_d. Nie wiem też jak to obciąża serwer/bazę.
Niestety z powodu ograniczonej wiedzy php’owej, nie mam pojęcia jak się do tego zabrać. Gotowego kodu nie oczekuję, ale miłoby było dostać chociaż wskazówkę w formie manula/docsa.