надо подписываться через epoll только на чтение из сокета, чтобы он не теребил CPU зря. Однако первый шаг - это отправить запрос (предположим, что соединение с сервером было остановлено заранее).
получается, что надо вызвать один раз mysql_real_query_nonblocking() и дальше надеяться, что записи в сокет не потребуется. а ведь протокол клиент-серверного общения - это не самая очевидная штука. мало ли в какой ветке кода надо будет записать чего-то в сокет - и тогда epoll просто не скажет об этом.
или я переживаю зря? надо записать один раз через mysql_real_query_nonblocking(), а потом ждать байтиков, доступных для чтения?
не очень понял опасения. но вообще клиент-серверный протокол довольно простой. общение всегда инициирует клиент, отправляя команду на сервер. в случае mysql_real_query_nonblocking() это команда COM_QUERY. в ответ клиент получает пакеты OK, EOF или ERR
Обсуждают сегодня