Size: a a a

2019 December 26

Г

Глеб in phpGeeks
Vadim
тоесть в какой-то из моделей где я испотзую этот компонент у меня есть рекурсия? окей, спасибо, буду копать
Да, функция сама в себе ввзвалась 256 раз
источник

V

Vadim in phpGeeks
Глеб
Да, функция сама в себе ввзвалась 256 раз
понять бы еще где
источник

V

Vitaly in phpGeeks
Vadim
понять бы еще где
там и файл и строка указаны
источник

V

Vadim in phpGeeks
ну он ругается на это
источник

r

release-tracker in phpGeeks
Вышла новая версия Phalcon: high performance, full-stack framework:  v4.0.0
источник

r

release-tracker in phpGeeks
Вышла новая версия Workerman: event driven PHP framework:  v3.5.23
источник

AS

Alexey Shatunov in phpGeeks
release-tracker
Вышла новая версия Phalcon: high performance, full-stack framework:  v4.0.0
🎅
источник

Кm

Кирилл mrDoode in phpGeeks
Товарищи, вопрос
У меня есть функция для оформления заказа в магазине
На вход она получает айдишник категории товара и количество необходимого товара.
В функции в начале идёт запрос в базу mysql на наличие этого количества товара, далее следует некоторая логика основанная на этом количестве, и потом, если всё ок, идёт бронь товара ввиде запроса на обновление записей.
Вопрос в следующем: какова вероятность того, что если некоторое количество пользователей одновременно обратятся к скрипту, попытаются заказать все доступные товары, и скрипт всем скажет, что товар доступен для бронирования и попытается одновременно обновить позиции для брони?
И как этого можно избежать, соответственно
источник

D

DK in phpGeeks
Кирилл mrDoode
Товарищи, вопрос
У меня есть функция для оформления заказа в магазине
На вход она получает айдишник категории товара и количество необходимого товара.
В функции в начале идёт запрос в базу mysql на наличие этого количества товара, далее следует некоторая логика основанная на этом количестве, и потом, если всё ок, идёт бронь товара ввиде запроса на обновление записей.
Вопрос в следующем: какова вероятность того, что если некоторое количество пользователей одновременно обратятся к скрипту, попытаются заказать все доступные товары, и скрипт всем скажет, что товар доступен для бронирования и попытается одновременно обновить позиции для брони?
И как этого можно избежать, соответственно
кто первым заберёт у того и будет товар,не? Второму отдать "товар закончился\или в резерве"
источник

AS

Alexey Shatunov in phpGeeks
DK
кто первым заберёт у того и будет товар,не? Второму отдать "товар закончился\или в резерве"
это есть пока только в постгресе, select for update .. skip locked
источник

Кm

Кирилл mrDoode in phpGeeks
Скрипт выполняется доли секунды, но ведь при большом количестве одновременных запросов есть вероятность следующего:
1) юзер1 получает информацию, что 10 товаров доступно
2) юзер2 получает информацию, что 10 товаров доступно
3) юзер1 бронирует 10 товаров
4) юзер1 пытается забронить 10 товаров и получает ошибку
источник

V

Vitaly in phpGeeks
Кирилл mrDoode
Товарищи, вопрос
У меня есть функция для оформления заказа в магазине
На вход она получает айдишник категории товара и количество необходимого товара.
В функции в начале идёт запрос в базу mysql на наличие этого количества товара, далее следует некоторая логика основанная на этом количестве, и потом, если всё ок, идёт бронь товара ввиде запроса на обновление записей.
Вопрос в следующем: какова вероятность того, что если некоторое количество пользователей одновременно обратятся к скрипту, попытаются заказать все доступные товары, и скрипт всем скажет, что товар доступен для бронирования и попытается одновременно обновить позиции для брони?
И как этого можно избежать, соответственно
SELECT ...... LOCK IN SHARE MODE
источник

AS

Alexey Shatunov in phpGeeks
Vitaly
SELECT ...... LOCK IN SHARE MODE
не прокатит.. 5 человек увидят товар, 4 магазин при оформлении заказа прокинет что "товар закончился"
источник

AS

Alexey Shatunov in phpGeeks
надо сразу транзакцию резервировать, а если через N времени не купил то откатывать
источник

Кm

Кирилл mrDoode in phpGeeks
SHOW VARIABLES LIKE "%version%";
источник

AS

Alexey Shatunov in phpGeeks
самый правильный и простой вариант который я вижу: UPDATE .. SET ts = 12345 LIMIT 1; SELECT * FROM ... WHERE ts = 12345; через 5 минут UPDATE ... SET ts = null WHERE ts < 12345 - 5 минут
источник

Кm

Кирилл mrDoode in phpGeeks
Alexey Shatunov
это есть пока только в постгресе, select for update .. skip locked
А тут как делать?
Я заранее извиняюсь за возможно глупые или банальные вопросы, я фронтендер))
источник

Кm

Кирилл mrDoode in phpGeeks
Alexey Shatunov
самый правильный и простой вариант который я вижу: UPDATE .. SET ts = 12345 LIMIT 1; SELECT * FROM ... WHERE ts = 12345; через 5 минут UPDATE ... SET ts = null WHERE ts < 12345 - 5 минут
Хм, ок
источник

Кm

Кирилл mrDoode in phpGeeks
Alexey Shatunov
самый правильный и простой вариант который я вижу: UPDATE .. SET ts = 12345 LIMIT 1; SELECT * FROM ... WHERE ts = 12345; через 5 минут UPDATE ... SET ts = null WHERE ts < 12345 - 5 минут
А если мне нужно 10 товаров, то получается я могу ориентироваться на количество обновлённых строк, и если их мнеьше 10, то значит товара недостаточно, верно?
источник

AS

Alexey Shatunov in phpGeeks
Кирилл mrDoode
А если мне нужно 10 товаров, то получается я могу ориентироваться на количество обновлённых строк, и если их мнеьше 10, то значит товара недостаточно, верно?
да, все верно
источник