Клиент на python, сервер php, суть в том, что клиент должен получать данные с сервера. Сейчас клиент проверяет необходимые данные с определенным периодом, отправляя запросы на сервер, но понятно, что при большом трафике это не серьезно. Поэтому начинаю думать в сторону long polling или сокетов. Но в любом случае надо писать демона на php. Не хочется сильно заморачиваться потому что обмен сообщениями небольшой, на самом деле он вообще можно сказать никакой, сервер просто должен отправлять значение переменной при ее изменении клиенту. Что посоветуете? Какие есть альтернативы или какие готовые решения/библиотеки заюзать, чтобы не плясать с бубном ради одной переменной?
sim3x: клиентская часть - просто расширение для одной программы, написанной на python, для расширения ее функционала, сервер - обычный сайт который висит на обычном хостинге, в дальнейшем конечно можно купить VPS/VDS, но пока что так.
Вот тут: https://habrahabr.ru/post/209864/ приведен пример листинга сервера на php для работы веб сокетов на пару страниц, при этом в комментариях явно дали понять что он не завершен и не предусмотрены некоторые моменты. Хотите сказать что это самое простое решение для получения значения одной переменной клиентом от сервера?
Сергей: допустим с сервером я разберусь, а как быть с клиентом? Если он на python, везде примеры на javascript, примеры с питоном только для сервера но не для клиента, как организовать работу клиента на питоне с сокетами?
Сергей Блин, зачем советовать, если даже не знаешь что и как?! Так еще и проголосовал кто-то за этот ответ. Какие нахрен вебсокеты? Почитайте хоть на википедии зачем это и почему появилось. Поколение html5, блин. Чем вас обычные сокеты не устраивают? Сервер следит за переменной. Изменилась - бродкастим ее на все подключенные сокеты. Клиент смотрит на сокет не пришло ли чего. Все. Задачка на десяток строк кода. Нет блин, давайте накрутим вебсокеты, прикрутим еще очереди и обязательно все в облако, а то модно. А, да, еще лучше всего вообще это на ноде сделать, а то в интернете примеры кода только под js есть )
kazmiruk: человек про long pooling думает. Если бы он не был бы новичком, таких вопросов не задавал бы.
Примеров про websocket море. Это более универсальный способ соединения в веб. Потому что, сегодя у вас питон, а завтра html страница.
Поэтому я предложил это.
Сергей:
"Это более универсальный способ соединения в веб" смешно. Ребята и не знали )
"Потому что, сегодя у вас питон, а завтра html страница." - ага, а завтра на кофеварку захочу установить
"Если бы он не был бы новичком, таких вопросов не задавал бы." поэтому вы ему как новичку вместо простой работы с сокетами (специально посмотрел - простой пример даже на пхп займет около 15 строк) предлагаете реализовать вебсокет, который мало того, что имеет кучу версий стандартов (которые в случае перехода в веббраузер придется в той или иной степени поддерживать), так еще и требует реализацию определенного формата хэндшейков + сообщений? Ну в принципе да, пусть страдает и учится )
Сергей: какие изыскания? Любой более-менее нормальный программист знает что такое сокет и с чем его едят. Такая статья есть и находится она в документации к php, python и вообще любому языку программирования. Зачастую с примером кода клиента и сервера.
блин, я сдаюсь. Еще один гениальный ответ добавился :(
"В .NET есть библиотека SignalR. Идея в том, что она проверяет, поддерживает ли браузер веб-сокеты, long polling, forever frames или server sent events" - походу взаимодействие без браузера вообще какая-то немыслимая вещь. ТС, короче рецепт судя по всему прост - ставим браузер, ставим .NET, пишем приложение на C#, которое будет общаться сбраузером через вебсокет, в свою очередь приложение на C# должно через командную строку (по другому никак походу, сокеты НЕВЕРОЯТНО сложная вещь) общаться с python клиентом. И заканчиваем тем, что в браузере еще добавляем общение через вебсокет с сервером на пхп. Профит :)
Денис Гончаренко: не очень спец по питону, но уверен, что наверняка есть либы, а если нет, то протокол примитивный, текстовый, распарсить не проблема
в принципе с клиента можете отправлять только заголовки стандарта, тело может быть любым, а в php для надежности выключить таймаут если есть такая возможность
Дмитрий Беляев: выключение таймаута не поможет. Какойнить nginx завернет соединение автоматически исходя из своих настроек, при этом пых останется работать, если забыть отключить ignore_user_abort =)
В .NET есть библиотека SignalR. Идея в том, что она проверяет, поддерживает ли браузер веб-сокеты, long polling, forever frames или server sent events. Если что-то одно поддерживает, то это и использует. Если поддерживает несколько технологий, то на свое усмотрение выбирает технологию, программист даже не вникает, что именно из этого под капотом крутится, т к обращается через обертку. Поищите аналоги для python/php