![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
я написал PHP, который читает файлик (код товара $Articul и цена $Pr) и пишет в базу. Файлик обычный, текстовый... Запрос:
Код:
UPDATE user_babymarket.catalog SET price = '".$Pr."' WHERE catalog.kod = '".$Articul."' LIMIT 1 ; Последний раз редактировалось mrzed; 25.12.2008 в 11:11.. |
|
|
|
|
| Реклама: | сара сон | дача барнхаус | Магазин бытовой техники: дешевая стиральная машина - переходи на сайт ТАЙМТВ! | шкаф управления вентиляцией | Мебельный магазин: детская мебель амели - Переходи на сайт! |
|
|
#2
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
Ну пролетает тогда когда просто нет записи в базе.
Тебе надо сначало проверять есть ли запись в базе, если есть то делать update а если нету то insert. А по поводу скорости попробуй задать индекс-uniq или primary key на поле kod. И зачем использовать LIMIT 1? |
|
|
|
|
|
#3
|
|
запись в базе есть, это априори. Я просто лишь обновляю цены в базе.. Список большой.. Я беру одну строчку и пишу в базу, в принципе Limit 1 не обязателен.. К скорости у меня претензий нет, это разовая процедура в несколько дней.. Проблема в том, что команды выполняются, но без изменений в базе. Выполняется 9000 запросов. Через некоторое время можно выполнить процедуру и изменения примут силу.. Но иногда ну просто ни в какую не хочет.
|
|
|
|
|
|
|
#4
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
Да как-то мутно....
Если ты уверен что запись есть в базе и запрос иногда обновляет а иногда нет, может что-то с транзакциями. А какой тип таблицы у тебя? А и еще в скрипте для тестов лучше убрать функции которые подавляют исключения. Последний раз редактировалось agent_smith; 26.12.2008 в 17:22.. |
|
|
|
|
|
#5
|
|
тип таблицы? а как узнать? у меня MySQL..
вот полностью код, нет никаких исключений.. Просто должны выполняться запросы. Код:
<?php
$file = fopen("http://XXXXXXXXXX.com.ua/price.dat","r");
if(!file) {print("Ошибка открытия файла");}
else{
mysql_connect("XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXXXXX");
mysql_select_db("XXXXXXXXXXXXXXXX");
$Strochek=1;
$Articul = trim(fread($file,25)); $Pr = trim(fread($file,5)); fread($file,2); print("<br>".$Strochek." Артикул ".$Articul.", цена ".$Pr);
while(strcmp($Articul,"КОНЕЦ ПРАЙСА")<>0 && $Strochek<12000){
$sql="UPDATE user_babymarket.catalog SET price = '".$Pr."' WHERE catalog.kod = '".$Articul."' LIMIT 1 ;";
$res=mysql_query($sql);
$Strochek++;
$Articul = trim(fread($file,25)); $Pr = trim(fread($file,5)); fread($file,2);
print("<br>".$Strochek." Артикул ".$Articul.", цена ".$Pr." обработка = ".$res);
}
print("<br><br><br><br><br>База обновлена!!!");
}
?>
Последний раз редактировалось mrzed; 29.12.2008 в 09:48.. |
|
|
|
|
|
|
#6
|
|
Неактивный пользователь
Пол:
Регистрация: 10.01.2007
Сообщений: 8
Репутация: 0
|
9000 запросов к БД это много, в случае если используется shared-хостинг — то тем более.
как вариант это разбить обновление прайса на несколько кусков. Также необходимо обрабатывать ошибки mysql, например $res = mysql_query($sql); if($!res) { $error[] = "{$Articul}, ".mysql_error($res); } потом вывести ошибки echo join('<br />', $error); |
|
|
|
|
|
#7
|
|
Неактивный пользователь
Пол:
Регистрация: 14.11.2007
Сообщений: 3
Репутация: 1
|
Попробуй в конце каждого скрипта писать mysql_close(); может он транзакции не комитет!
|
|
|
|
|
|
#8
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
|
|
|
|
|
|
#9
|
|
Banned
Пол:
Регистрация: 26.10.2005
Сообщений: 218
Репутация: 73
|
Если БД тоже находится на XXXXXXXXXX.com.ua, то, ИМХО, разумнее файлик открывать с локальным путем, а не через HTTP-протокол.
Не мешало бы почитать о возможностях транзакций именно для Вашей версии мускула. Есть ли возможность просто импортировать текст во временную таблицу и уже из нее обновить требуемую за один проход? |
|
|
|
|
|
#10
|
|
Неактивный пользователь
Пол:
Регистрация: 16.03.2009
Сообщений: 3
Репутация: 0
|
|
|
|
|
|
|
#11
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
|
|
|
|
|
|
#12
|
|
Неактивный пользователь
Регистрация: 01.12.2008
Сообщений: 11
Репутация: 2
|
полсле WHERE пиши kod = $Articul , а не как ты написал catalog.kod ты ты уже обратился к схеме user_babymarket в таблицу catalog, вот из-за этого у тебя, надо прости пасть имя поле в условии |
|
|
|
|
|
#13
|
|
Неактивный пользователь
Пол:
Регистрация: 23.07.2009
Сообщений: 17
Репутация: 0
|
а index на catalog.kod установлен?
|
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Проблема настройки MySQL и PHP | wesper | Настраиваем собственный хостинг | 0 | 18.10.2009 08:37 |
| Проблема с отображением рез-тов запроса в DBChart на Bar | ivashgold | Delphi | 1 | 26.05.2008 07:38 |
| проблема с Delphi и MySql | vovapetr | Delphi | 0 | 12.03.2008 13:58 |
| Проблема с MySQL | taral | Базы данных | 2 | 22.12.2007 13:45 |
|
|