Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Блокировки в MySQL [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
caballero
Отправлено: 17 Мая, 2012 - 12:25:19
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
На примере файла - коннектов/запросов/транзакций можно делать несколько, и лочить файл не на весь процесс формирования заказа, а только на момент апдейта данных в БД - это доли секунды.

чо то уже потерял нить рассуждений - зачем какой то файл и зачем его лочить. какую проблему он решает которую не решает БД. в которой и так данные лочатся на момент апдейта.
тем более как я уже писал проблема надуманая.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
tuareg
Отправлено: 17 Мая, 2012 - 12:43:59
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




После того как пользователь нажал заказать. Проверяйте есть ли на данный момент такое количество товара. Если есть то оформляйте и т.д. Если нет, выдавайте сообщение, что к сожалению товар ужу закончился. Все больше думать не чего. caballero прав абсолютно, в том плане, что если юзер, положил товар в корзину, то списывать его со склада еще "очень рано".Т.к юзер может и очистить корзину и т.д.

(Отредактировано автором: 17 Мая, 2012 - 12:44:39)

 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Мая, 2012 - 12:55:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




tuareg пишет:
caballero прав абсолютно, в том плане, что если юзер, положил товар в корзину, то списывать его со склада еще "очень рано".Т.к юзер может и очистить корзину и т.д.
Я так и не оспариваю его правоту в этом.
ТС хочет защититься от ошибок в момент нажатия кнопки "заказать". Я показал как это сделать.
 
 Top
caballero
Отправлено: 17 Мая, 2012 - 13:09:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
ТС хочет защититься от ошибок в момент нажатия кнопки "заказать".

Никаких ошибок не будет если перед снятием товара еще раз проверять его наличие.
а если сначала снимать а потом не закрывая транзакцию проверить не ушел ли в минус - вообще проблеммы снимаются. при правильном уровне изоляции транзакций, разумеется.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
tuareg
Отправлено: 17 Мая, 2012 - 14:38:21
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




caballero пишет:
а если сначала снимать а потом не закрывая транзакцию проверить не ушел ли в минус
А смысл этой операции?
 
 Top
caballero
Отправлено: 17 Мая, 2012 - 15:31:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
А смысл этой операции?

не продать то чего нет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
mag1K
Отправлено: 17 Мая, 2012 - 16:07:13
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




caballero пишет:
Никаких ошибок не будет если перед снятием товара еще раз проверять его наличие.
а если сначала снимать а потом не закрывая транзакцию проверить не ушел ли в минус - вообще проблеммы снимаются. при правильном уровне изоляции транзакций, разумеется.


Тогда пользователи могут ведь назаказывать больше чем есть на складе, пусть это всё будет в резерве, но тогда придётся многим пользователям отказывать в их заказе, по причине нехватки товара. И это не хорошо, ведь когда он заказывал мы сообщили ему что товара достаточно. Я думаю это не правильно, на уровне взаимодействия с пользователем.

Мне кажется запрос предложенный, Мелкий, решает эту проблему.
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE products SET qty=qty-$qty WHERE `id`=$prod_id AND qty>=$qtu;


Есть какие либо возможности, чтобы съимитировать эту ситуацию одновременного заказа, на компьютере и проверить, так ли это? Может быть вставить паузу?
 
 Top
tuareg
Отправлено: 17 Мая, 2012 - 16:10:13
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




У меня в корзине лежит товар №1. Я добавляю товар №2. Прибавлении товара №2 я проверяю есть ли(не изменилось ли количество) товар №1
 
 Top
mag1K
Отправлено: 17 Мая, 2012 - 16:14:02
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




tuareg пишет:
У меня в корзине лежит товар №1. Я добавляю товар №2. Прибавлении товара №2 я проверяю есть ли(не изменилось ли количество) товар №1

Что простите?
 
 Top
tuareg
Отправлено: 17 Мая, 2012 - 16:17:02
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Тут по любому они смогут это сделать. Но если при каждом добавлении товара в корзину, я буду проверять есть ли кол-во, товаров, которые уже в корзине, тогда онине смогут назаказывать много. Но увеличится нагрузга на БД
 
 Top
mag1K
Отправлено: 17 Мая, 2012 - 16:21:17
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




tuareg пишет:
Тут по любому они смогут это сделать. Но если при каждом добавлении товара в корзину, я буду проверять есть ли кол-во, товаров, которые уже в корзине, тогда онине смогут назаказывать много. Но увеличится нагрузга на БД


Тоесть придётся, перед каждый заказом товара, искать все резервы на этот заказ и проверить суммарное количество всех заказов вместе с нашим не превышает ли количество товара на складе? как вариант, но мне кажется это уже не к чему, поскольку как я сказал выше в моём случае всё должно решатся этим простым запросом.

Как бы это теперь проверить?)
 
 Top
tuareg
Отправлено: 17 Мая, 2012 - 16:27:27
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Вам не нужен резерв. Зачем он? Например, то что я положил в корзину не значит, что я это купил... Просто проверяйте хватает ли? если да то продавайте.
P.S Страшный сон. Я Ваш конкурент. Пишем программу, которая кладет все Ваши товары в корзину, а по истечении какого-то времени, говорит, что ошиблась, не нужны мне эти товары. Пока товары в корзине, их никто другой купить не сможет. Ну а дальше....
 
 Top
caballero
Отправлено: 17 Мая, 2012 - 16:32:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
но тогда придётся многим пользователям отказывать в их заказе, по причине нехватки товара.

или уволить менеджера отвечающего за поставки на склад

Цитата:
И это не хорошо, ведь когда он заказывал мы сообщили ему что товара достаточно.

если он с этой корзиной полчаса лазил по сайту то он должен понимать что сообщение несколько устарело

Цитата:
Тут по любому они смогут это сделать. Но если при каждом добавлении товара в корзину, я буду проверять есть ли кол-во, товаров, которые уже в корзине, тогда онине смогут назаказывать много. Но увеличится нагрузга на БД


проверять на самом деле нужно только при формировании ордера. А если товар закончился его нужно не показывать в списке или не давать юзеру добавлять. (обычная надпись в инет магазинах "нет в наличии")

Цитата:
Как бы это теперь проверить?)

сначала подумай как юзер узнает о результате твоего запроса .


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
mag1K
Отправлено: 17 Мая, 2012 - 16:38:48
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




caballero пишет:
сначала подумай как юзер узнает о результате твоего запроса .

После нашего апдейта
PHP:
скопировать код в буфер обмена
  1.                //Товара хватило, добавляем ордер
  2.             }
  3.             else
  4.                //Вывести сообщение что товара не хватает
  5.           }
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB