Sergey
28.05.2018
11:22:51
AluV
28.05.2018
11:26:59
Что то неправильно с архитектурной точки зрения и валидирования
В кранем случае можно вместе с формой генерировать hash транзакции и записывать ее
Потом проверять если такая транзакция уже была то она не проходит
Google
AluV
28.05.2018
11:30:12
Когда генерируется новая форма покупки генерируется новый hash
Denis
28.05.2018
11:31:17
А можно проще) поступил запрос, положили в очередь) потом это все разгребается без состояния гонки, не?
Kroto
28.05.2018
11:34:16
А можно использовать транзакции
В ней проверять баланс и прочее
Denis
28.05.2018
11:35:02
главное что есть несколько вариантов как решить проблему)
Kroto
28.05.2018
11:35:21
И никаких гонок, если они и есть то юзать промисы
Igor
28.05.2018
11:36:53
Про очередь тоже думал, но не особо нравится
И есть какая-то статья по транзакциям?
Kroto
28.05.2018
11:37:52
try/catch обычно ж
И без велосипедов
А в sql begin и commit
No
28.05.2018
11:41:10
Как можно сделать 1 класс где будет идти подключение к БД и при обращении к нему из других классов, он не вызывался по новому, а выдавал старое подключение которое было получено один раз при его обращении ?
Dmitriy
28.05.2018
11:45:01
идти в сторону синглтона
Google
?
28.05.2018
11:46:17
или сервис локейтора хотя б
Dmitriy
28.05.2018
11:46:41
все равно нужно создавать синглтон
?
28.05.2018
11:47:12
как ди спасет ?
оно ж по умолчанию не создаёт новые инстансы, а пихает везде уже созданные
AluV
28.05.2018
11:47:21
что такое ди и локейтор ?
?
28.05.2018
11:47:41
AluV
28.05.2018
11:47:45
понял
?
28.05.2018
11:47:53
а сервис локейтор должен так гуглиться
AluV
28.05.2018
11:48:14
Я просто начал гуглить ioc container
В laravel это походу смесь паттернов включая di
Kolya
28.05.2018
11:48:41
бери из ларавеля
?
28.05.2018
11:48:58
Sergey
28.05.2018
11:51:07
Kroto
28.05.2018
11:52:40
Баланс в минус не уйдёт, например
Sergey
28.05.2018
11:52:53
что ему помешает?
Kroto
28.05.2018
11:53:15
Проверка на >0
Например
Sergey
28.05.2018
11:53:48
в обоих транзакциях баланс будет >0
Kroto
28.05.2018
11:54:05
Или проверка на достаточное количество средств на балансе
Google
Sergey
28.05.2018
11:54:15
и средств будет достаточно
Kroto
28.05.2018
11:54:21
Sergey
28.05.2018
11:54:30
AluV
28.05.2018
11:54:32
Транзакция здесь был термин финансовый а не к БД, надо спроектировать так чтобы запретить повторную покупку по той же корзине. Все повторные покупки должны осознанно собираться в новую корзину покупок либо с помощью кнопки "купить снова" или подобие тогда код покупки будет генерироваться заново и номер заказа уже другой
Kroto
28.05.2018
11:54:57
А там обычно исключение выбрасываешь
Sergey
28.05.2018
11:55:07
и что в исключении будет?
AluV
28.05.2018
11:57:30
transaction database ничем не помогут
Kroto
28.05.2018
11:58:11
+можно csrf токен в форму засунуть, это чтобы по хер знает сколько раз не отправлять форму
Sergey
28.05.2018
11:59:40
советую почитать про состояние гонки, чтоб плохие советы впредь не давать
Kroto
28.05.2018
11:59:50
На твой взгляд разумное
Sergey
28.05.2018
12:01:42
Самое быстрое - блокировка через select for update или файл
если данные часто обновляются, то пилим оптимистическую блокировку
Артур Евгеньевич
28.05.2018
12:13:03
Sergey
28.05.2018
12:16:47
нет, это дополнительное поле, которое меняется при каждом изменении строчки/ячейки, и его указывают в select
$res = query('select money, version from users where id = 14');
query('update users set money=?, version=? where id=14 and version=?', $res[money] - 1000, $res[version]+1, $res[version])
типо такого
Назарий
28.05.2018
12:58:32
Всем привет. При добавлении строк в базу мне нужно что бы в поле с типом varchar писат только уникальные данные (слаги). То есть, если строка с таким слагом уже есть, нужно, например, навешивать индекс. Как это можно реализовать? Спасибо
Sergey
28.05.2018
13:00:46
Назарий
28.05.2018
13:07:15
Google
Назарий
28.05.2018
13:07:46
AluV
28.05.2018
13:14:00
В SQL можно писать ключевые слова типа "SeLeCt"
они регистронезависимы же ?
Dmitriy
28.05.2018
13:14:15
зависит от бд
Игорь
28.05.2018
13:14:31
Пытаюсь сделать асинхронный запрос через guzzle
$client = new Client();
$promise = $client->requestAsync('GET','https://www.google.com/');
$promise->then(
function ($response) {
echo '123';
});
Выводит пустую страницу, хотя вроде должен вывести "123". Что я неправильно делаю?
AluV
28.05.2018
13:16:04
Промис должен принимать две функции одна успешно завершился запрос вторая с ошибкой
Хотя я не уверен как в твоей либе
Игорь
28.05.2018
13:18:27
$client = new Client();
$promise = $client->requestAsync('GET','https://www.google.com/');
$promise->then(
function ($response) {
echo '123';
},
function ($response) {
echo 'err';
});
Тоже пустую выводит
Алексей
28.05.2018
13:20:00
Всем привет! У кого есть опыт подключения и настройки safari webpush можете поделиться ??
AluV
28.05.2018
13:21:46
Я бы выводил не 123 а response
и смотрел как он устроен, возможно тебе что то типа нужно будет $responce->data
или $response->body
Там есть фигня типа ->wait() и смотрел получает ли он какие данные или нет
Еще есть опции это какие ты данные ожидаешь получить смотришь нужно ли в твоей либо включать эти заголовки
Игорь
28.05.2018
13:24:51
$promise->then(
function ($response) {
dump($response);
},
function ($response) {
dump($response);
}
});
Вообще ничего не выводит
пустая страница
с wait тоже
Google
Игорь
28.05.2018
13:46:49
Всё, разобрался
AluV
28.05.2018
13:50:20
Мне вот интересно в тесте спрашивается: What is the output of the following code?
В текстовом виде значения выводятся
1
2
3
Alexandr
28.05.2018
13:50:33
всем привет, по вп может кто подсказать, возможно ли изменить формат вывода даты только для одной записи?))
AluV
28.05.2018
13:50:44
А в браузере из за отсутствия <br> все в одну строчку
а варианты ответа и тот и тот - какой правильный ?
Andrey
28.05.2018
13:52:38
Alex
28.05.2018
13:53:11
Andrii
28.05.2018
13:58:45
в DateTime::createFromFormat где можно задать локаль, чтобы парсило русские тексты? Вроде DateTime::createFromFormat('j F', '28 мая');
Sergey
28.05.2018
14:04:08
Liv
28.05.2018
14:51:18
помогите с правилом для редиректа. Нужно переадресовывать адреса вида `http://host.com/path1/page` на `http://host.com/anotherPath/page`. Пробую так RewriteRule %{HTTP_HOST}/path1(.*)$ %{HTTP_HOST}/anotherPath/$1 [R=301,L]
такой вариант тоже не работает, отдает 404
RewriteCond %{REQUEST_URI} ^/path1(.*)$
RewriteRule ^(.*)/path1(.*)$ $1/anotherPath/$2 [R=301,L]
Ky
28.05.2018
16:09:48
Артур
28.05.2018
16:38:35
всем привет) подскажите плиз))
как сделать, что бы с profile/username/2134565 делало редирект на profile/username в .htaccess