Голям CSV файл и мнооого SQL заявки

nadness

Registered
Парсвам едни големи CSV файлове, с данните от които се извършват различни операции. Ето какво правя накратко:
Обхождам всеки ред от файла, като за всеки първо проверявам дали има продукт с такова име в таблицата.
2.Ако няма, добавям целия ред, като нов продукт, със статус 1/нов/.
3. Ако има, редактирам го и ако досега е бил със статус 1, става със статус 3 - нередактирани. /имам редакция на по-късен етап, когато вече стават редактирани/. Ако е с друг статус /2,3 или 4/, остава с него.
4. Ъпдейтвам всички продукти от таблицата, които не са сега добавени или променени /$date != $time AND $change_date != $time/ със статус 4 /неактуални/.

Но нещо ми се струва много хамалска работа, а и на слаб сървър забива. Ето и кода за нагледност, като чакам идеи за някаква оптимизация:

<?php
session_start();


if(isset($_POST["Go"]) && ""!=$_POST["Go"]){ //form was submitted

if(!$error){
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, $size);

$db -> setQuery("SELECT title,status FROM table WHERE `title` = '$line_of_text[0]'");
$db -> query();//proverka dali veche ima produkt s tova ime
$status = array_pop($db -> loadResultArray(14));
$rows = $db -> getAffectedRows();
if(!$rows){ //ako nqma, dobavqme go
$db -> setQuery("INSERT INTO table SET
`title` = '$line_of_text[0]',
...");
$db -> query();
}else{
if($status == '1'){ //ako e bil nov, otiva v neredaktirani - stаtus 3
$stat = '3';
}else{
$stat = $status;
}
$db -> setQuery("UPDATE table SET `status` = '$stat' ... WHERE `title` = '$line_of_text[0]' ");
$db -> query();
}
}
//update za neaktualni produkti



$db -> setQuery("UPDATE table SET `status` = '4' WHERE `date` != '$time' AND `change_date` != '$time' AND `status` != '4'");
$db -> query();



fclose($file_handle);




?>

/скобите не съвпадат, защото това не е целия файл/
 

Back
Горе