Всегда `Не удалось привязать к tcp: // my_ip_here: 8080 Адрес уже используется`

Я пытался развернуть свой сервер веб-сокетов и запустить его, но всегда выдает:

PHP Fatal error:
Uncaught exception 'React\Socket\ConnectionException'
with message       'Could not bind to tcp://my_ip_here:8080:
Address already in use'
in                 /var/www/html/webscoket/vendor/react/socket/src/Server.php:29

вот мой server.php:

<?php
require dirname(__DIR__) . '/vendor/autoload.php';

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use React\Socket\Server;
use React\ZMQ\Context;

$loop   = React\EventLoop\Factory::create();
$app    = new onyxsocket();
$webSock = new Server($loop);
$webSock->listen(8080, 'my_ip_here');
$webServer = new IoServer(
new HttpServer(
new WsServer(
$app
)
),
$webSock
);

$context = new Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://my_ip_here:5555');
$pull->on('error', function ($e) {
var_dump($e->getMessage());
});
$pull->on('message', array($app, 'onbroadcast'));
$loop->run();

До сих пор я пытался проверить доступные порты, которые можно использовать на рабочем сервере: netstat - anp дал мне представление о том, что порт 8080 это бесплатно. Но проблема в том, что он все еще показывает ошибку Адрес уже используется. Я также попробовал другие порты, данные администратором, но не повезло.

server.php то, что я пытаюсь развернуть, работает нормально на localhost. Но я не знаю, что мне нужно сделать, чтобы это работало на рабочем сервере.

Нужна помощь. Благодарю.

4

Решение

от @ user3666197 комментарий выше:

Уточните код, пожалуйста. Ваш серверный код ZeroMQ .bind () -s для порта # 5555. Так чей код связывается с портом localhost # 8080, о котором сообщается в необработанном исключении выше? Как вы очищаете для грациозного выхода любой сбойный EventLoop / Factory, чтобы освободить ресурсы и избежать зависания сирот?

Я решил перепроверить netstat: netstat -tulpen и проверьте для портов 8080 и 5555 и узнайте, что есть зарегистрированный PID на порте, соединяющемся в настоящее время. Это приложение было тем же скриптом, который я хочу запустить на консоли, server.php,

Я убиваю PID: kill PID_number и запустить server.php снова на консоли. Это сработало.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]