код:
conn();
$filename="csv.csv";
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
{
if($data[2]!='')
{
$sql0="SELECT * FROM `balans` WHERE `finish_saldo` = '$data[9]'";
$res0=mysql_query($sql0);
if(!$res0||mysql_num_rows($res0)<1)
{
$import_balans="INSERT INTO `balans`(`idn`, `period`, `start_saldo`, `earn_m`, `earn_r`, `pay`, `finish_saldo`) VALUES
('$data[2]', '$data[1]', '$data[5]', '$data[7]', '$data[6]', '$data[8]', '$data[9]')";
}
else{
$import_user_info="UPDATE `balans` SET `period` = '$data[1]', `start_saldo` = '$data[5]',
`earn_m` = '$data[7]', `earn_r` = '$data[6]', `pay` = '$data[8]', `finish_saldo` = '$data[9]' WHERE `idn` ='$data[2]'";
}
$import_equipment="INSERT INTO `equipment`(`idn`, `type`, `model`, `date_create`, `serial_number`, `date_of_sealing`, `seal_number`, `state`) VALUES ('$data[2]', '', '$data[11]', '$data[15]', '$data[12]', '', '', '')";
$import_meter_reading="INSERT INTO `meter_reading`(`idn`, `period`, `value`, `pay_type`) VALUES ('$data[2]', '$data[13]', '$data[14]', '$data[10]')";
$sql="SELECT * FROM `user_info` WHERE `account` = '$data[2]'";
$res=mysql_query($sql);
if(!$res||mysql_num_rows($res)<1)
{
$import_user_info="INSERT INTO `user_info`(`fio`, `account`, `living_space`, `occupancy`, `adress`, `telefone`, `mobile`, `email`, `icq`, `password`, `password_temp`, `status`)
VALUES ('".mysql_real_escape_string($data[3])."', '$data[2]', '', '', '$data[4]', '', '', '', '', '', '', 'user')";
}
else{
$import_user_info="UPDATE `user_info` SET `fio` = '$data[3]', `adress` = '$data[4]' WHERE `account` ='$data[2]'";
}
$res1=mysql_query($import_balans);
$res2=mysql_query($import_equipment);
$res3=mysql_query($import_meter_reading);
$res4=mysql_query($import_user_info);
if(!$res1){$r1='<div class="false">$import_balans - ошибка добавления </div>';}
if(!$res2){$r2='<div class="false">$import_equipment - ошибка добавления </div>';}
if(!$res3){$r3='<div class="false">$import_meter_reading - ошибка добавления </div>';}
if(!$res4){$r4='<div class="false">$import_user_info - ошибка добавления </div>';}
}
}
echo '<br>'.$r1.'<br>'.$r2.'<br>'.$r3.'<br>'.$r4.'<br>Импорт завершен...';
Спустя 3 минуты, 2 секунды (31.07.2012 - 15:08) DarkLynx написал(а):
никакого форматирования, Вы сами то разбираетесь в этой стене текста?
Именно стене!!!
Именно стене!!!
Спустя 35 минут, 21 секунда (31.07.2012 - 15:43) Strannik написал(а):
Цитата (DarkLynx @ 31.07.2012 - 16:08) |
никакого форматирования, Вы сами то разбираетесь в этой стене текста? Именно стене!!! |
разложил код по строкам для лучшего понимания.
Спустя 1 час, 12 минут, 37 секунд (31.07.2012 - 16:56) DarkLynx написал(а):
$import_equipment
$import_meter_reading
Точно можно вынести из цикла..
Сам я не проверял нагрузки, точно утверждать не буду, но вроде в цикле запросы базу нагружают весьма сильно..
Это я считаю точно надо вынести из цикла.
Это что первое в глаза бросилось.
$import_meter_reading
Точно можно вынести из цикла..
Сам я не проверял нагрузки, точно утверждать не буду, но вроде в цикле запросы базу нагружают весьма сильно..
Это я считаю точно надо вынести из цикла.
Это что первое в глаза бросилось.
Спустя 32 минуты, 24 секунды (31.07.2012 - 17:28) inpost написал(а):
DarkLynx
Про форматирование я лично давал ссылку и говорил, чтобы человек использовал один из стилей программирования адекватных...
Strannik
Ну сколько можно одно спрашивать?
Про форматирование я лично давал ссылку и говорил, чтобы человек использовал один из стилей программирования адекватных...
Strannik
Ну сколько можно одно спрашивать?
Спустя 2 часа, 15 минут, 12 секунд (31.07.2012 - 19:43) Strannik написал(а):
inpost
не одно) предудущая тема по данному запросу была здесь, но там здесь дамп больше, и там не было тебя=)
если не сложно брось ссылку еще раз пожалуйста.
не одно) предудущая тема по данному запросу была здесь, но там здесь дамп больше, и там не было тебя=)
если не сложно брось ссылку еще раз пожалуйста.
Спустя 1 минута, 33 секунды (31.07.2012 - 19:45) Strannik написал(а):
Цитата (DarkLynx @ 31.07.2012 - 17:56) |
$import_equipment $import_meter_reading Точно можно вынести из цикла.. Сам я не проверял нагрузки, точно утверждать не буду, но вроде в цикле запросы базу нагружают весьма сильно.. Это я считаю точно надо вынести из цикла. Это что первое в глаза бросилось. |
к сожалению там тоже нужна проверка data2
Я почему спросил то - полный дамп занимает почти 20 часов, а это очень нехорошо...
Спустя 30 минут, 52 секунды (31.07.2012 - 20:16) inpost написал(а):
Я говорю о стиле кодирования.
Спустя 37 минут, 32 секунды (31.07.2012 - 20:53) Strannik написал(а):
Цитата (inpost @ 31.07.2012 - 21:16) |
Я говорю о стиле кодирования. |
если это как то ускорит мой скрипт, сбрось ссылку пожалуйста.
Спустя 40 минут, 5 секунд (31.07.2012 - 21:33) DarkLynx написал(а):
Цитата (Strannik @ 31.07.2012 - 17:45) | ||
к сожалению там тоже нужна проверка data2 Я почему спросил то - полный дамп занимает почти 20 часов, а это очень нехорошо... |
У тебя нету ограничения времени на выполнение скрипта? Или я что то не догоняю...
Спустя 2 часа, 8 минут, 33 секунды (31.07.2012 - 23:42) inpost написал(а):
Strannik
Это ускорит его понимание. В каше никто не захочет разбираться, кроме уж тех, кому тем более делать нечего...
Это ускорит его понимание. В каше никто не захочет разбираться, кроме уж тех, кому тем более делать нечего...
Спустя 1 день, 10 часов, 18 минут, 14 секунд (2.08.2012 - 10:00) Strannik написал(а):
DarkLynx
ограничение есть, просто время поставили большое. речь не об этом-просто хочу понять можно ли увеличить скорость работы скрипта, оптимизировав скрипт или может возможно увеличить скорость работы сервера.
inpost
я вроде бы код разложил(посмотри) там сейчас не каша, но если все равно бэд, скинь ссылку где можно хотя бы почитать о том, что ты имеешь ввиду...
ограничение есть, просто время поставили большое. речь не об этом-просто хочу понять можно ли увеличить скорость работы скрипта, оптимизировав скрипт или может возможно увеличить скорость работы сервера.
inpost
я вроде бы код разложил(посмотри) там сейчас не каша, но если все равно бэд, скинь ссылку где можно хотя бы почитать о том, что ты имеешь ввиду...
Спустя 11 минут, 45 секунд (2.08.2012 - 10:12) kamanch написал(а):
Не копался в коде, расскажу, что я делал с такими монстрами в 200к строк, при условии, что это не на один раз.
1. Писал десктопную софтину, которая переворачивала мне этот csv в дамп sql.
2. По ftp льем полученный dump.sql на сервер.
3. Через ssh разворачиваем его в базе mysql.
4. Работаем уже чисто с базой.
Это было во много, очень во много раз быстрее, нежеле парсить на сервере csv.
Ну, кроме написания десктопной софтины. Но это один раз, а такие дампы приходилось ворочить каждый понедельник.
1. Писал десктопную софтину, которая переворачивала мне этот csv в дамп sql.
2. По ftp льем полученный dump.sql на сервер.
3. Через ssh разворачиваем его в базе mysql.
4. Работаем уже чисто с базой.
Это было во много, очень во много раз быстрее, нежеле парсить на сервере csv.
Ну, кроме написания десктопной софтины. Но это один раз, а такие дампы приходилось ворочить каждый понедельник.
Спустя 4 минуты, 21 секунда (2.08.2012 - 10:16) Strannik написал(а):
kamanch
допустим перевернуть csv в дамп sql можно и средствами php(можно распарсить и сделать sql файл), ровно как и его заливку. а что ты имеешь ввиду под пунктом 3(Через ssh разворачиваем его в базе mysql)?
допустим такая ситуация, я все сделал залил(создал) sql файл на серваке, а как быть дальше?
допустим перевернуть csv в дамп sql можно и средствами php(можно распарсить и сделать sql файл), ровно как и его заливку. а что ты имеешь ввиду под пунктом 3(Через ssh разворачиваем его в базе mysql)?
допустим такая ситуация, я все сделал залил(создал) sql файл на серваке, а как быть дальше?
Спустя 5 минут, 36 секунд (2.08.2012 - 10:22) kamanch написал(а):
Качаем Putty, конектимся к серверу.
В терминале пишем:
В терминале пишем:
mysql --user=USER_NAME --pass=PASSWORD --host=HOST_NAME --default-character-set=utf8 DB_NAME < dump.sql
Спустя 1 день, 14 часов, 20 минут, 17 секунд (4.08.2012 - 00:42) Strannik написал(а):
kamanch
спасибо. буду пробовать.
спасибо. буду пробовать.