
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