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