Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(PHP) Скрипт загрузки из csv в базу mysql
|
|||
|---|---|---|---|
|
#18+
Написал скрипт php загрузки из csv в базу mysql на сайт, но он грузит процессор у хоста и хост его блокирует, кто может подсказать что не так? <?php if(file_exists('public_html/data_1c/archive.zip')){ unlink('public_html/data_1c/archive.zip') or die ('Архив не удален'); $f = file_get_contents('Exchange/Wares.csv'); $f = iconv("WINDOWS-1251", "UTF-8", $f); file_put_contents('Exchange/Wares.csv', $f); $to='mail@mail.ru'; $hd=null; $hd.="Content-Type: text/html; charset=windows-1251\r\n"; $hd.="From: DOMEN.RU\r\n"; $hd.="X-Mailer: PHP/".phpversion()."\r\n"; $subject='Обновление Базы Данных'; $mess=null; $mess.= "Архив загрузки удален!<br>"; $Updat_date = date('Y-m-d H:i:s'); // Сегоднешняя дата // Конектемся к базе mysql_connect('DB_HOSTNAME,DB_USERNAME,DB_PASSWORD'); // Целка avi88_celka TsC87R7t mysql_select_db('DB_DATABASE'); mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8"); mysql_query("SET CHARACTER_SET_CONNECTION=utf8"); // Функция проверки формата фотки $image_arh = 'Exchange/'; $image_path = 'public_html/image/'; function imgdel($vo){ $ipa = 'public_html/image/'; $imv=array(38,40,50,75,100,120,180,250,500); foreach($imv as $ud){ @unlink($ipa."cache/".$vo.'-'.$ud.'x'.$ud.'.jpg'); @unlink($ipa."cache/".$vo.'-'.$ud.'x'.$ud.'.JPG'); } } $text="<br><br>Следующие файлы имеют неверный формат, хотя сохранены как jpg:"; $wa=0; if (($handle = fopen("Exchange/Wares.csv", "r")) !== FALSE) { $NomObNom = 0; while (($data = fgetcsv($handle, 0, "^")) !== FALSE) { $PoleiVStroke = count($data); $GruppaYrovOb= $data[0] ; $DobavkaXyeva=$GruppaYrovOb*3; $pos = strpos($data[$DobavkaXyeva+15], 'KonStrDiS'); if ($pos === false) { if ($PoleiVStroke>3) { $mess.= "! Ошибка многострочие! строка не загружена ".$data[$DobavkaXyeva+2]." Код ".$data[$DobavkaXyeva+1]."<br>"; } } else { // Удаляем если надо удалить! if ($data[$DobavkaXyeva+14]==1) { $sproduct_id = [$DobavkaXyeva+1]; $tovarFoto = [$DobavkaXyeva+13]; $PervoeSlov= explode(".", $tovarFoto); $tovarFoto1 = $PervoeSlov[0]; $tovarFoto2 = ".".$PervoeSlov[1]; mysql_query("DELETE FROM dic_product WHERE product_id = '$sproduct_id'") or die(mysql_error()); mysql_query("DELETE FROM dic_product_description WHERE product_id = '$sproduct_id'") or die(mysql_error()); if(file_exists('public_html/image/'.$tovarFoto)){ unlink('public_html/image/'.$tovarFoto) or die ('Не удалось удалить фото удаляемого товара с папки public_html/image/'.$tovarFoto); } if(file_exists('public_html/image/cache/'.$tovarFoto1.'-75x75'.$tovarFoto2)){ unlink('public_html/image/cache/'.$tovarFoto1.'-75x75'.$tovarFoto2) or die ('Не удалось удалить фото удаляемого товара с папки public_html/image/cache/'.$tovarFoto1.'-75x75'.$tovarFoto2); } if(file_exists('public_html/image/cache/'.$tovarFoto1.'-120x120'.$tovarFoto2)){ unlink('public_html/image/cache/'.$tovarFoto1.'-120x120'.$tovarFoto2) or die ('Не удалось удалить фото удаляемого товара с папки public_html/image/cache/'.$tovarFoto1.'-120x120'.$tovarFoto2); } if(file_exists('public_html/image/cache/'.$tovarFoto1.'-250x250'.$tovarFoto2)){ unlink('public_html/image/cache/'.$tovarFoto1.'-250x250'.$tovarFoto2) or die ('Не удалось удалить фото удаляемого товара с папки public_html/image/cache/'.$tovarFoto1.'-250x250'.$tovarFoto2); } if(file_exists('public_html/image/cache/'.$tovarFoto1.'-500x500'.$tovarFoto2)){ unlink('public_html/image/cache/'.$tovarFoto1.'-500x500'.$tovarFoto2) or die ('Не удалось удалить фото удаляемого товара с папки public_html/image/cache/'.$tovarFoto1.'-500x500'.$tovarFoto2); } } else { $NomObNom = $NomObNom+1; $VremNom=1; $VigrFoto=0; // Если группы > 1 то проверяим и заносим их если нет их в базе if($GruppaYrovOb>1){ $PredCategory=0; for($igr=0;$igr<$GruppaYrovOb;$igr++){ $Сategory_id = $data[$VremNom]; $VremNom=$VremNom+1; $СategoryNeme = addslashes($data[$VremNom]); $VremNom=$VremNom+1; $СategoryFoto = $data[$VremNom]; //Проверяем есть ли на mysql Категория с токим id $sql="SELECT category_id FROM dic_category WHERE category_id = '$Сategory_id'"; $result = mysql_query($sql); $row = mysql_fetch_array($result); //Загружаем на mysql Категорию Если нету такой категории if ($row=='') { $dic_category = mysql_query("INSERT INTO dic_category (category_id, parent_id, sort_order, date_added, date_modified, status) VALUE ('$Сategory_id', '$PredCategory', 0, '$Updat_date', '$Updat_date', 1)"); $dic_category_description = mysql_query("INSERT INTO dic_category_description (category_id, language_id, name, meta_keywords, meta_description, description) VALUE ('$Сategory_id', 1,'$СategoryNeme','$СategoryNeme','$СategoryNeme','$СategoryNeme')"); $sqlKatKatstore="SELECT category_id FROM dic_category_to_store WHERE category_id = '$Сategory_id'"; if(mysql_num_rows($sqlKatKatstore) > 0){ //mysql_query("update dic_category_to_store SET store_id='0' WHERE category_id = '$Сategory_id'") or die(mysql_error()); } else{ mysql_query("INSERT INTO dic_category_to_store (category_id, store_id) VALUES ('$Сategory_id', '0')"); } // ЕСЛИ У КАТЕГОРИИ ФОТКА if($СategoryFoto != ''){ if(file_exists('Exchange/'.$СategoryFoto)){ global $image_arh,$image_path; $СategoryFoto = str_replace("*","",$СategoryFoto); $ar = explode(".",$СategoryFoto); $image=''; $add_to_update=''; if(file_exists($image_arh.$ar[0].".jpg")){ $image=$ar[0].".jpg"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if (file_exists($image_arh.$ar[0].".JPG")){ $image=$ar[0].".JPG"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } if($image != ''){ mysql_query("UPDATE dic_category SET image='".$image."' WHERE category_id = '$Сategory_id'") or die(mysql_error()); unlink('Exchange/'.$СategoryFoto) or die ('Не удалось удалить фото '.$СategoryFoto); $VigrFoto=$VigrFoto+1; } } } } // Иначе Обновляем на mysql Категорию Если уже есть else { $dic_category = mysql_query("UPDATE dic_category SET parent_id = '$PredCategory', date_modified = '$Updat_date'WHERE category_id = '$Сategory_id'") or die(mysql_error()); $dic_category_description = mysql_query("UPDATE dic_category_description SET name = '$СategoryNeme', meta_keywords = '$СategoryNeme', meta_description = '$СategoryNeme', description = '$СategoryNeme' WHERE category_id = '$Сategory_id'") or die(mysql_error()); // ЕСЛИ У КАТЕГОРИИ ФОТКА if($СategoryFoto != ''){ if(file_exists('Exchange/'.$СategoryFoto)){ global $image_arh,$image_path; $СategoryFoto = str_replace("*","",$СategoryFoto); $ar = explode(".",$СategoryFoto); $image=''; $add_to_update=''; if(file_exists($image_arh.$ar[0].".jpg")){ $image=$ar[0].".jpg"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if (file_exists($image_arh.$ar[0].".JPG")){ $image=$ar[0].".JPG"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } if($image != ''){ mysql_query("UPDATE dic_category SET image='".$image."' WHERE category_id = '$Сategory_id'") or die(mysql_error()); unlink('Exchange/'.$СategoryFoto) or die ('Не удалось удалить фото '.$СategoryFoto); $VigrFoto=$VigrFoto+1; } } } } $PredCategory=$Сategory_id; $VremNom=$VremNom+1; } } // Если группы = 1 то проверяим и заносим их если нет их в базе else{ $Сategory_id = $data[$VremNom]; $VremNom=$VremNom+1; $СategoryNeme = addslashes($data[$VremNom]); $VremNom=$VremNom+1; $СategoryFoto = $data[$VremNom]; //Проверяем есть ли на mysql Категория с токим id $sql="SELECT category_id FROM dic_category WHERE category_id = '$Сategory_id'"; $result = mysql_query($sql); $row = mysql_fetch_array($result); //Загружаем на mysql Категорию Если нету такой категории if ($row=='') { $dic_category = mysql_query("INSERT INTO dic_category (category_id, parent_id, sort_order, date_added, date_modified, status) VALUE ('$Сategory_id', '$PredCategory', 0, '$Updat_date', '$Updat_date', 1)"); $dic_category_description = mysql_query("INSERT INTO dic_category_description (category_id, language_id, name, meta_keywords, meta_description, description) VALUE ('$Сategory_id', 1,'$СategoryNeme','$СategoryNeme','$СategoryNeme','$СategoryNeme')"); $sqlKatKatstore="SELECT category_id FROM dic_category_to_store WHERE category_id = '$Сategory_id'"; if(mysql_num_rows($sqlKatKatstore) > 0){ //mysql_query("update dic_category_to_store SET store_id='0' WHERE category_id = '$Сategory_id'") or die(mysql_error()); } else{ mysql_query("INSERT INTO dic_category_to_store (category_id, store_id) VALUES ('$Сategory_id', '0')"); } // ЕСЛИ У КАТЕГОРИИ ФОТКА if($СategoryFoto != ''){ if(file_exists('Exchange/'.$СategoryFoto)){ global $image_arh,$image_path; $СategoryFoto = str_replace("*","",$СategoryFoto); $ar = explode(".",$СategoryFoto); $image=''; $add_to_update=''; if(file_exists($image_arh.$ar[0].".jpg")){ $image=$ar[0].".jpg"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if (file_exists($image_arh.$ar[0].".JPG")){ $image=$ar[0].".JPG"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } if($image != ''){ mysql_query("UPDATE dic_category SET image='".$image."' WHERE category_id = '$Сategory_id'") or die(mysql_error()); unlink('Exchange/'.$СategoryFoto) or die ('Не удалось удалить фото '.$СategoryFoto); $VigrFoto=$VigrFoto+1; } } } } // Иначе Обновляем на mysql Категорию Если уже есть else { $dic_category = mysql_query("UPDATE dic_category SET parent_id = '$PredCategory', date_modified = '$Updat_date'WHERE category_id = '$Сategory_id'") or die(mysql_error()); $dic_category_description = mysql_query("UPDATE dic_category_description SET name = '$СategoryNeme', meta_keywords = '$СategoryNeme', meta_description = '$СategoryNeme', description = '$СategoryNeme' WHERE category_id = '$Сategory_id'") or die(mysql_error()); // ЕСЛИ У КАТЕГОРИИ ФОТКА if($СategoryFoto != ''){ if(file_exists('Exchange/'.$СategoryFoto)){ global $image_arh,$image_path; $СategoryFoto = str_replace("*","",$СategoryFoto); $ar = explode(".",$СategoryFoto); $image=''; $add_to_update=''; if(file_exists($image_arh.$ar[0].".jpg")){ $image=$ar[0].".jpg"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if (file_exists($image_arh.$ar[0].".JPG")){ $image=$ar[0].".JPG"; $add_to_update=" image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } if($image != ''){ mysql_query("UPDATE dic_category SET image='".$image."' WHERE category_id = '$Сategory_id'") or die(mysql_error()); unlink('Exchange/'.$СategoryFoto) or die ('Не удалось удалить фото '.$СategoryFoto); $VigrFoto=$VigrFoto+1; } } } } $VremNom=$VremNom+1; } // Назначаем значения товару $sproduct_id = $data[$VremNom]; $tovar_name = addslashes($data[$VremNom+1]); $tovar_articul = addslashes($data[$VremNom+2]); $tovar_ed = $data[$VremNom+3]; //sku $tovar_manufacture = $data[$VremNom+4]; //Страна производитель $price = $data[$VremNom+5]; $price_opt = $data[$VremNom+6]; $price_superopt = $data[$VremNom+7]; $quantity = $data[$VremNom+8]; //Остаток товара $tovar_akciya = $data[$VremNom+9]; //Акция $tovar_SuperSkidka = $data[$VremNom+10]; //Распродажа % $tovar_desc = addslashes($data[$VremNom+11]); //Описание товара $tovar_Foto = $data[$VremNom+12]; //Фото товара $PervoeSlovoName = explode(" ", $tovar_name); $MetaKey = $PervoeSlovoName[0]; //Удаление = $data[$VremNom+13]; //Конец Строки = $data[$VremNom+14]; // Проверяем есть ли токой Страна Производитель бренд товара у нас на сайте $sqlMan="SELECT name FROM dic_manufacturer WHERE name = '$tovar_manufacture'"; $result = mysql_query($sqlMan); $rowMan = mysql_fetch_array($result); if ($rowMan=='') { $result = mysql_query("INSERT INTO dic_manufacturer (name,image, sort_order) VALUES ('$tovar_manufacture','',0)"); } $sqlManFakt = mysql_query("SELECT manufacturer_id FROM dic_manufacturer WHERE name = '$tovar_manufacture'"); $result = mysql_query($sqlManFakt); $manufacturer_id = mysql_fetch_array($result); // Проверяем есть ли такой товар у нас на сайте $sql="SELECT product_id FROM dic_product_description WHERE product_id = '$sproduct_id'"; $result = mysql_query($sql); $row = mysql_fetch_array($result); if ($row=='') { //если нет такого товара, то создаем и потом записываем в другую табличку все его остальные данные $result = mysql_query("INSERT INTO dic_product_description (product_id, language_id, name, meta_keywords, meta_description, description) VALUES ('$sproduct_id', 1, '$tovar_name', '$MetaKey', '$MetaKey', '$tovar_desc')"); //записываем в таблицу все данные товара что получили с выгрузки и все ай-ди что до этого получили из базы $produkt = mysql_query("INSERT INTO dic_product (product_id, model, sku, location, quantity, stock_status_id, image, manufacturer_id, shipping, price, price_opt, price_superopt, tax_class_id, date_available , weight, weight_class_id, length, width, height, length_class_id, status, subtract, minimum, sort_order, date_added , date_modified, viewed, cost, code_1c, artikul) VALUE ('$sproduct_id','$tovar_articul','$tovar_ed','','$quantity', '6', '','$manufacturer_id','1','$price','$price_opt','$price_superopt', '9', '$Updat_date', '0','1',0,0,0,1,1,1,1,0,'$Updat_date','$Updat_date',0,0, '$sproduct_id','$tovar_articul')"); //записываем категорию товара $sqlPrKat="SELECT product_id FROM dic_product_to_category WHERE product_id = '$sproduct_id'"; if(mysql_num_rows($sqlPrKat) > 0){ mysql_query("update dic_product_to_category SET category_id='$Сategory_id' WHERE product_id = '$sproduct_id'") or die(mysql_error()); } else{ mysql_query("INSERT INTO dic_product_to_category (product_id, category_id) VALUES ('$sproduct_id', '$Сategory_id')"); } $sqlPrKatstore="SELECT product_id FROM dic_product_to_store WHERE product_id = '$sproduct_id'"; if(mysql_num_rows($sqlPrKatstore) > 0){ //mysql_query("update dic_product_to_store SET store_id='0' WHERE product_id = '$sproduct_id'") or die(mysql_error()); } else{ mysql_query("INSERT INTO dic_product_to_store (product_id, store_id) VALUES ('$sproduct_id', '0')"); } // ЕСЛИ У товара ФОТКА if($tovar_Foto != ''){ if(file_exists('Exchange/'.$tovar_Foto)){ $ar = explode(".",$tovar_Foto); $image = ''; $add_to_update = ''; if(file_exists($image_arh . $ar[0] . ".jpg")){ $image=$ar[0].".jpg"; $add_to_update = " image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if(file_exists($image_arh.$ar[0].".JPG")){ $image = $ar[0] . ".JPG"; $add_to_update = " image='".$image."',"; imgdel($ar[0]); copy ($image_arh . $image, $image_path . $image); } if($image != ''){ mysql_query("UPDATE dic_product SET image='".$image."' WHERE product_id = '$sproduct_id'") or die(mysql_error()); unlink('Exchange/'.$tovar_Foto) or die ('Не удалось удалить фото '.$tovar_Foto); $VigrFoto=$VigrFoto+1; } } } } // Иначе Обновляем на mysql товар Если уже есть else { //если есть такой товар, то обновляем его и все его остальные данные $dic_product_description = mysql_query("UPDATE dic_product_description SET name = '$tovar_name', meta_keywords = '$MetaKey', meta_description = '$MetaKey', description = '$tovar_desc'WHERE product_id = '$sproduct_id'") or die(mysql_error()); //записываем в таблицу все данные товара что получили с выгрузки $dic_product = mysql_query("UPDATE dic_product SET model = '$tovar_articul', sku = '$tovar_ed', quantity = '".$quantity."', manufacturer_id = '$manufacturer_id', price = '$price', price_opt = '$price_opt', price_superopt = '$price_superopt', date_modified = '$Updat_date', artikul = '$tovar_articul' WHERE product_id = '$sproduct_id'") or die(mysql_error()); mysql_query('INSERT INTO `dic_product_to_store` (product_id,store_id) SELECT product_id, 0 FROM dic_product'); // if ($dic_product == !'true') { // $mess.= "Данные успешно обновлены.".$tovar_name."<br>"; // } // else { // $mess.= "Данные не обновлены! у товара ".$tovar_name."<br>"; // } //записываем категорию товара $sqlPrKat="SELECT product_id FROM dic_product_to_category WHERE product_id = '$sproduct_id'"; if(mysql_num_rows($sqlPrKat) > 0){ mysql_query("update dic_product_to_category SET category_id='$Сategory_id' WHERE product_id = '$sproduct_id'") or die(mysql_error()); } else{ mysql_query("INSERT INTO dic_product_to_category (product_id, category_id) VALUES ('$sproduct_id', '$Сategory_id')"); } // ЕСЛИ У товара ФОТКА if($tovar_Foto != ''){ if(file_exists('Exchange/'.$tovar_Foto)){ $ar = explode(".",$tovar_Foto); $image = ''; $add_to_update = ''; if(file_exists($image_arh . $ar[0] . ".jpg")){ $image=$ar[0].".jpg"; $add_to_update = " image='".$image."',"; imgdel($ar[0]); copy($image_arh.$image,$image_path.$image); } else if(file_exists($image_arh.$ar[0].".JPG")){ $image = $ar[0] . ".JPG"; $add_to_update = " image='".$image."',"; imgdel($ar[0]); copy ($image_arh . $image, $image_path . $image); } if($image != ''){ mysql_query("UPDATE dic_product SET image='".$image."' WHERE product_id = '$sproduct_id'") or die(mysql_error()); unlink('Exchange/'.$tovar_Foto) or die ('Не удалось удалить фото '.$tovar_Foto); $VigrFoto=$VigrFoto+1; } } } } } } } fclose($handle) ; unlink('Exchange/Wares.csv') or die ('Файл Wares не удален'); } $mess.= "Загружено ".$NomObNom." позиций номенклатуры!, из них новых фото ".$VigrFoto." ! <br>"; $mess.= "<br> Загрузка базы завершена успешно!!! <br>"; mail ($to,$subject,$mess,$hd); } ?> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 15:29 |
|
||
|
(PHP) Скрипт загрузки из csv в базу mysql
|
|||
|---|---|---|---|
|
#18+
load data infile? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 15:40 |
|
||
|
(PHP) Скрипт загрузки из csv в базу mysql
|
|||
|---|---|---|---|
|
#18+
avi88что не так?Километр нечитаемой лапши без форматирования вряд ли кто-то разбирать будет... По теме вопроса: можно штатными средствами MySQL воспользоваться для заливки во временную таблицу, как советует Скаря. Но тут уж не до логики обработки на лету, только загрузка. Обработку отдельно делать. Либо обрабатывать файл относительно небольшими порциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 15:47 |
|
||
|
(PHP) Скрипт загрузки из csv в базу mysql
|
|||
|---|---|---|---|
|
#18+
avi88, Как вариант, можно подключиться к CSV через ODBC, тогда не понадобится эта нечитаемая куча ...а, да и с кодировкой попроще будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 16:30 |
|
||
|
(PHP) Скрипт загрузки из csv в базу mysql
|
|||
|---|---|---|---|
|
#18+
vkleavi88что не так?Километр нечитаемой лапши без форматирования вряд ли кто-то разбирать будет... . поддиржу предыдущиго аратара! зы: я листая эту лапшу колёсиком, успел раза три вспомнить матушку автора и пожелать ей здоровья :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2013, 02:07 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38288571&tid=1463735]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 261ms |
| total: | 417ms |

| 0 / 0 |
