Я работаю над приложением php приставка, которое лучше всего запускать на одном экземпляре, не предназначен для работы в браузере без сохранения состояния и с постоянным перезапуском. Однако это консольное приложение должно взаимодействовать и получать команды из клиентского браузера удаленно.
Например:
Я экспериментировал с несколькими решениями, но я не уверен, что это правильный способ добиться этого.
PHP не предназначен для такой задачи. Будет сложно реализовать серверное приложение, обрабатывающее несколько клиентов, однако на самом деле это не невозможно. Что такое операционная система?
Предполагая сервер Linux, см. функции сокета, и чтобы иметь возможность обслуживать несколько клиентов, вы должны предварительно разветвить однопоточный процесс через pcntl_fork. Вам необходимо самостоятельно управлять несколькими дочерними процессами и даже разветвлять новые по требованию при большой нагрузке.
Как упоминалось выше, вопрос слишком широк, чтобы ответить на него в StackOverflow. Испытайте удачу с данными подсказками и вернитесь с конкретным вопросом, когда столкнетесь с проблемой реализации.
@Quasimodo'sclone спасибо за ваш ответ, использование сокетов может сработать. в любом случае я выбираю php, потому что я лучше знаком с языком, но теперь думаю переключиться на node.js.
Если у вас есть выбор, вы действительно должны. Существуют также кодовые базы для C++, которые уже управляют несколькими соединениями параллельно. Я рассматриваю возможность использования этого для более крупных проектов, которые я хочу распространять как приложения с собственным кодом. Однако для написания сценариев в node.js требуется всего несколько строк кода, и вы можете прослушивать полный серверный процесс онлайн. PHP является однопоточным, и дочерними процессами необходимо управлять с нуля. Одновременно может обрабатываться только одно соединение. Вам нужно создавать дочерние процессы и передавать им запросы для их обработки, чтобы продолжить прослушивание порта с помощью основного процесса.






вам нужно будет немного расширить область, возможно, она будет закрыта как широкая.