Good
Андрей
Нужно принимать сообщения от web sockets сервера и писать их в БД.
Нашел ws клиента на PHP - https://github.com/ratchetphp/Pawl
Но есть одна проблема, при долгом отсутствии сообщений скрипт зависает.
Вопрос: может быть нужно как-то пинать клиента каждые n минут, чтобы он не засыпал? Но как к нему обратиться когда он законнектин с ws сервером?
Или может быть есть варинты лучше?
Важно: клиент не должен отпадать на долго, т.к. нужно получать все сообщения.
Vadim
Я могу ошибаться, но разве работать с сокетами на php - хорошая идея?
Андрей
Sam
Как реализовать редирект с передачей параметров, но не GET, а POST?
Micro
Sam
Micro
Отправь форму с помощю js и вот тебе редирект с методом post
Sam
Да вот тут как раз таки форма. Хочу сделать платеж через Яндекс.Форму, но нужно на неё передавать данные методом POST. Но параллельно есть ещё пополнение через Free-Kassa. Я сделал так: выпадающее меню с выбором метода оплаты, и в самой модели формы далее в зависимости от оплаты дергается определенная функция, которая формирует данные для редиректа и делает его
Sam
Sam
Отправь форму с помощю js и вот тебе редирект с методом post
В принципе, можно сделать так:
Создать отдельный action, который будет принимать GET-данные, и прописывать их в input, которые будут с типом hidden, а сама форма с методом "POST", но выводить кнопку "Оплатить". Также для улучшения юзабилити, чтобы юзер сам ничего не жал можно с помощью jQuery Trigger сделать иммитацию клика на кнопку, и если юзер растерялся и не успел нажать кнопку — нажатие произойдет само и пойдет редирект
Sam
Так и попробую, наверное
Sam
Спасибо за ответы
Micro
Артём
кто использует gitter(такой же чат для гитхаба)? Че как там, стоит ставить?
Dmitriy
Смотря для чего
Vladislav
@MatvikX давно не обновлялся)
Sam
Доброе утро, кстати.
Alexey
некоторые платежные системы хотят чтоб им данные слались постом
🎅
Почему не поставить method post?
Sam
Почему сразу в action не прописать?
У пользователей есть выбор: либо оплатить способ А, либо способ Б, либо способом В.
Соотвественно, каждая платежная система принимает разные поля с разными названия.
Таким образом, если прописывать в action — в зависимости от выбора в выпадающем списке нужно:
1. Подставлять в action URL определенной платежной системы.
2. Удалять/добавлять некоторые поля, которые нужны ПП.
Alexey
Sam
+ко всему, некоторым платежным системам нужно генерировать разного рода данные, к примеру подпись в SHA1/MD5. Таким образом, пришлось бы сразу генерировать готовые данные для каждой системы и хранить их
Alexey
делай PaymentSystemSelectForm, которая в зависимости от выбора либо редирект сделает, либо отрисует автосабмит форму
Sam
А так, как я описал — пользователь выбирает сумму, систему и уже на бэке генерируются данные под конкретную систему
🎅
Маленький скрипт на vue или можно просто ваниллу и все, проблем то
Sam
Sam
Ну и уже сделал методом, который описал выше
Alexey
автосабмит форма может выглядеть например так https://github.com/yii-dream-team/yii2-perfect-money/blob/master/src/RedirectForm.php
Sam
Но за ответы спасиб
Niko
Sam
На данный момент реализовал так
Sam
В принципе, можно сделать так:
Создать отдельный action, который будет принимать GET-данные, и прописывать их в input, которые будут с типом hidden, а сама форма с методом "POST", но выводить кнопку "Оплатить". Также для улучшения юзабилити, чтобы юзер сам ничего не жал можно с помощью jQuery Trigger сделать иммитацию клика на кнопку, и если юзер растерялся и не успел нажать кнопку — нажатие произойдет само и пойдет редирект
Niko
Я бы сделал интерфейс для форм платежных систем и никаких post-редиректов не делал бы
Дмитрий
Добрый день!
Дмитрий
подскажите на пальцах разницу в AR joinWith и with ?
Дмитрий
спасибо уже понял)
Дмитрий
php
with('имя связи') - жадная загрузка связи отдельным запросом
join('имя таблицы') - простой JOIN таблицы
joinWith('имя связи') - простой JOIN таблицы + жадная загрузка связи отдельным запросом
SiZE
для with можно и выключить жадную
Niko
Дмитрий
он наверное имел ввиду что можно выключить на joinWith
SiZE
Niko
Выполнение запроса происходит 70мс!!! 18000 записей
SELECT * FROM table WHERE some_model_id IN ('12', '11', '10', '7', '4', '1')
Индекс есть, внешний ключ висит
Почему так долго???
Alexey
In запросы не используют индекс
SiZE
SiZE
И как ты замеряешь время? Может это с учетом установки соединения у тебя?
Niko
SiZE
А схема какая у таблицы?
Niko
не совсем понял
SiZE
myisam?
Niko
innodb
Дмитрий
многовато имхо 70мс
Дмитрий
интересно почему так
Дмитрий
и какая альтернатива IN ?
Alexey
In запросы не используют индекс
Дмитрий
вроде тут речь об myisam
SiZE
Alexey
Дмитрий
Niko
Union
Предлагаешь сделать выборки по одному id и объединить результаты?
Дмитрий
https://stackoverflow.com/questions/37994957/can-mysql-find-in-set-or-equivalent-be-made-to-use-indices/38002986#38002986
SiZE
Alexey
SiZE
Дмитрий
SiZE
т.к. два скана таблицы
Niko
мне тоже так кажется. сейчас у меня по IN идет 6 id, а допустим станет 10000
Пол дня буду ждать
Дмитрий
Дмитрий
если у тебя примари кей ИНТ, то в IN у тебя совсем не инт, а стринги
Дмитрий
попробуй убрать кавычки и сделай запрос, будет ли разница в тайминге
Дмитрий
ну сделай вручную
Дмитрий
чтобы понять разницу
Дмитрий
просто у меня много где IN используется и индексы там юзаются