Нагромоздил код))) грузит проц. на 100% , обрабатывает 25-30 тыс. строк за 1-1.5 часа.
Встал вопрос как оптимизировать код, с чего начать на что обратить внимание? буду благодарен любым советам.
Писать на связке php + mysql начал не давно....так что сильно не ругайте (за не структурированость и т.д.), код под спойлером.
<?php
error_reporting (-1);
set_time_limit (130);
require_once ('excel/excel_reader2.php');
require_once ('config_db.php');
$image = "data/new.png";
$dataupdate = date("Y-m-d");
$dataupdate1 = date("Y-m-d H:i:s");
$location = "xp";
$location1 = "xp1";
$margin = "0.30";
$roundish = "10";
$data = new Spreadsheet_Excel_Reader("price.xls",false,"UTF-8");
$data->setOutputEncoding('UTF-8');
//$data->read('price.xls');
//print_r($data);
mysql_connect($db_table_host, $db_user_name, $db_user_pass) or die("Не удалось подключиться к БД");
mysql_select_db($db_table_name) or die("Не удалось подключиться к Базе");
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$sql = "UPDATE av_product SET quantity = 0 WHERE location = '".mysql_real_escape_string($location)."'";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
$sql = "UPDATE av_product SET quantity = 0 WHERE location = '".mysql_real_escape_string($location1)."'";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
$cur_i = 0;
for ($i = 1; $i <= $data->sheets[1]['numRows']; $i++) {
if($data->sheets[1]['cells'][$i][8] != ""){
if($cur_i == 0){
$cur_i++;
}else{
$sql = "SELECT * FROM av_product WHERE sku = '".$data->sheets[1]['cells'][$i][2]."'";
$cur_product_query = mysql_query($sql) or die('Query failed: ' . mysql_error());
$cur_product = mysql_fetch_array($cur_product_query);
if(!is_numeric(trim($data->sheets[1]['cells'][$i][8])))
$product_count = 5;
else $product_count = $data->sheets[1]['cells'][$i][8];
if($cur_product['sku'] != ""){
// обновляем товар
$sql = "UPDATE av_product SET sku = '".$data->sheets[1]['cells'][$i][2]."', quantity = '".$product_count."', date_available = '".$dataupdate."', cost = '".$data->sheets[1]['cells'][$i][7]."' WHERE sku = '".$data->sheets[1]['cells'][$i][2]."'";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
}else{
$sql = "INSERT INTO av_product (sku, location, cost, quantity, image, date_available, date_added, margin, roundish) VALUES ('".$data->sheets[1]['cells'][$i][2]."', '".mysql_real_escape_string($location1)."', '".$data->sheets[1]['cells'][$i][7]."', '".$product_count."', '".$image."', '".$dataupdate."', '".$dataupdate1."', '".$margin."', '".$roundish."')";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
$last_id = mysql_insert_id();
$sql = "INSERT INTO av_product_description (product_id, language_id, name) VALUES ('".$last_id."', 1, '".mysql_real_escape_string($data->sheets[1]['cells'][$i][4])."')";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
//Ровняем seourl
$seo = mysql_insert_id();
$query = "product_id=$seo";
$keyword = $seo;
$sql = "INSERT INTO av_url_alias (query, keyword) VALUES ('".$query."', '".$keyword."')";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
}
}
}
}
//Ровняем model = product_id
$sql = "UPDATE av_product SET model = product_id";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
//Если товар "xp1" и кол-во больше нуля, то включаем товар на сайте.
$sql = "UPDATE av_product SET status = 1 WHERE location = '".mysql_real_escape_string($location1)."' AND quantity > 0";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
//Если товар "xp1" и кол-во меньше нуля, то отключаем товар на сайте."
$sql = "UPDATE av_product SET status = 0 WHERE location = '".mysql_real_escape_string($location1)."' AND quantity = 0";
mysql_query($sql) or die('Ошибка запроса: ' . mysql_error());
?>
