Задать вопрос
@razumovsu
Интересуюсь web-разработкой, IT-технологиями

Как сделать работы websocket на php без запуска сервера через консоль?

Необходимо сделать real time чат на php. Думаю использовать laravel bootstrap angular и Ratchet библиотеку для создания real time двунаправленных приложений на php с использованием websocket. Проблема в том, что в документации к ratchet при создании такого приложения необходимо запускать из консоли скрипт, который как я понял запускает ws-сервер.
Файл push-server.php:
<?php
    require dirname(__DIR__) . '/vendor/autoload.php';

    $loop   = React\EventLoop\Factory::create();
    $pusher = new MyApp\Pusher;

    // Listen for the web server to make a ZeroMQ push after an ajax request
    $context = new React\ZMQ\Context($loop);
    $pull = $context->getSocket(ZMQ::SOCKET_PULL);
    $pull->bind('tcp://127.0.0.1:5555'); // Binding to 127.0.0.1 means the only client that can connect is itself
    $pull->on('message', array($pusher, 'onBlogEntry'));

    // Set up our WebSocket server for clients wanting real-time updates
    $webSock = new React\Socket\Server($loop);
    $webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect
    $webServer = new Ratchet\Server\IoServer(
        new Ratchet\Http\HttpServer(
            new Ratchet\WebSocket\WsServer(
                new Ratchet\Wamp\WampServer(
                    $pusher
                )
            )
        ),
        $webSock
    );

    $loop->run();

Его нужно запустить из под командной строки:
$ php bin/push-server.php
Но я не понимаю, как его нужно запускать на хостинге на продакшен сервере? На локальной машине все работает, когда запускаешь сервер из под консоли, но как на хостинге так сделать не понятно? И можно сделать так, чтоб не надо было все время для работы websocket запускать это вручную.
Спасибо.
  • Вопрос задан
  • 1291 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
Просто настраиваем тот же supervisord, который будет запускать\перезапускать процесс.
Ответ написан
Комментировать
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
но как на хостинге так сделать не понятно

Если под хостингом вы имеете в виду shared-хостинг для сайтов на PHP, то:
1. Там предоставляют доступ по ssh обычно.
2. Если у вас что-то серьёзнее, чем обычный сайт (а вебсокеты - это уже серьёзнее) - лучше арендовать VPS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы