Как websocket работает в php


у меня есть такие сомнения, например, у меня есть сервер, написанный на PHP.

Когда пользователь A подключается к серверу, сервер выполняет действие, которое занимает 4 секунды, например, если раньше этого срока новый пользователь B подключиться, и он будет ожидать выполнения пользовательских A в конечном итоге, прежде чем сделать его исполнения? или как это работает? я потерян.

я Не знаю, если он мне не понять..

Author: Vinícius Lara, 2015-12-23

1 answers

WebSocket

Websockets процесс очень похож на обычный HTTP, но разница в том, что не закрыли соединение, и не нужно приказать серверу, чтобы знать, когда есть что-то новое, событие внутри ws получает сигналы или данные непосредственно с сервера.

, Если написать websocket основной, вероятно, он будет синхронным, если пользователь A передать что-то очень долго, вероятно, процесс будет "остановлен" до конца, но в время передачи профессионалы других пользователей, длинный сообщение пользователю A и все получат то же время, вероятно.

Тем не менее, читая о ratchetphp/Ratchet, более конкретно это сообщение:

И в ссылке, содержащейся в комментариях github, имеется возможность использовать "процесс детей":

  • Https://github.com/reactphp/child-process)

    И там, в хранилище находится следующее описание:

    Asynchronous ChildProcess (ru: Процесс детей, async)

    Пример использование:

    $loop = React\EventLoop\Factory::create();
    
    $process = new React\ChildProcess\Process('echo foo');
    
    $process->on('exit', function($exitCode, $termSignal) {
        // ...
    });
    
    $loop->addTimer(0.001, function($timer) use ($process) {
        $process->start($timer->getLoop());
    
        $process->stdout->on('data', function($output) {
            // ...
        });
    });
    
    $loop->run();
    

Итог:, То, как websockets работают в PHP будет зависеть от того, как код был написан reactphp уже является асинхронным, и по-прежнему поддерживает child-process, затем с помощью библиотеки, пользователь B не нужно будет ждать, пока пользователь A, любя, силы взаимодействия с websockets.

socket в php работает так же, как сокет нормально, мы обычно используем fsockopen stream, или даже другие библиотеки, такие как curl.

PHP написан на C++, поэтому, вероятно, будет зависеть от того, что расширение php, вы имеете в виду. Но основным является он подключается через сокет, будет зависеть только от вас, как разработчика, установки, например мне сделать один HTTP-запрос необходимо сделать запрос по TCP.


Серверов HTTP

, Но если вы хотите понять, как работает управление запросов клиентов к серверу "нормальный", который использует PHP (обслуживается производства), я должен сказать вам, что это не php, который управляет этим, но да Apache Nginx lightTPD, которые являются HTTP-серверов.

  • обратите Внимание, что PHP back-end HTTP-сервера, так как вместо PHP, вы можете использовать Python или другие интерпретаторы/компиляторы, поэтому PHP отвечает на HTTP-сервер, и этот же сервер, который отвечает на клиент (браузер пользователя).

Как Apache, как другие разделяют серверов запросы childs (являются своего рода "поток"), в apache процесса является синхронным, но все еще имеет несколько детей, что позволяет нескольким людям доступ без необходимости что ждите другого. Можно настроить ограничения в родном Apache, помните, чем выше порог больше памяти потребуется.

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

Childs, как потоки или подпроцессы, соединения, вероятно, разделено между эти подпроцессы и возвращаются позже.

Каждый тип сервера есть свой собственный способ управления соединениями и вернуть ответ, запросов, это также может изменяться в зависимости от типа сервера, в качестве сервера, который использует ядро Linux, либо сервер под управлением Windows.

, Но в основной пользователь B нужно ждать A и в конечном итоге его выполнения.

 14
Author: Guilherme Nascimento, 2015-12-24 22:11:13