Основанный на событиях mysql для php сокета? - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть веб-клиент, который я закодировал в php / html / javascript / jquery. Мой клиент получает через javascript (в посте) данные с сервера MySQL через php-скрипт. Я знаю, что мог бы сделать сервер сокетов php, работающий на этом поле php-apache-mysql, но как мне сообщить моему серверу сокетов, что новая запись в таблице сервера mysql только что произошла, без проверки новых записей каждую X секунду, через работа в короне? Есть ли какая-либо система, основанная на событиях?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Архитектуры на основе событий в PHP, как известно, сложно реализовать, но из-за ряда ограничений, которые делают его, по меньшей мере, не лучшим языком для чего-то подобного. Вам бы лучше сделать это в чем-то вроде Node.js или в другом языке / среде, которая сама по себе основана на событиях.

PHP не является лучшим языком для этого, потому что, среди других причин, он не может быть многопоточным, и вы не можете написать свои собственные неблокирующие подпрограммы - что ставит вас в невыгодное положение при разработке многопользовательского сокета сервер.

Сказав, что если бы вы решили создать свой сокет-сервер на PHP, это можно было бы сделать, хотя и немного ужасным образом. Основной поток будет примерно таким:

  • Есть триггер MySQL, который вызывает внешнюю программу через что-то вроде sys_exec()
  • Внешняя программа, которую она вызывает (это может быть PHP-скрипт), подключается к работающему серверу сокетов любым удобным для вас способом, может быть, сокетным соединением, может быть общей памятью, может быть чем-то совершенно другим, как сигнал POSIX, и уведомляет процесс сокета сервера новой строки.
  • Сервер сокетов теперь может запускать SELECT (или нет, может быть, вы передаете все данные, которые вам нужны из приведенного выше сценария), и делаете все, что вам нужно с этими данными, и отправляете данные клиентам.
0 голосов
/ 14 декабря 2011

Если вы уже настроили прослушиватель сокетов, вам просто нужно отредактировать php-скрипт, отвечающий за вставку новых записей mysql, чтобы он отправлял сигнал в сокет, когда вставка прошла успешно.Или, может быть, я не понимаю ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...