@phpgeeks

Страница 7494 из 8430
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
что такое ди и локейтор ?
ди это dependency injection

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
бери из ларавеля

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
в обоих транзакциях баланс будет >0
Да, но вторая не пройдёт

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 писат только уникальные данные (слаги). То есть, если строка с таким слагом уже есть, нужно, например, навешивать индекс. Как это можно реализовать? Спасибо

Назарий
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
всем привет, по вп может кто подсказать, возможно ли изменить формат вывода даты только для одной записи?))
Создаешь шаблон для вывода и ставишь условия для вывода, зашей туда id или что там уникальное и все, будет только одна запись выводиться

Andrii
28.05.2018
13:58:45
в DateTime::createFromFormat где можно задать локаль, чтобы парсило русские тексты? Вроде DateTime::createFromFormat('j F', '28 мая');

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

Страница 7494 из 8430