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