2017-01-05 11 views
0

У меня был скрипт сервера, и я закрыл его преждевременно, используя Ctrl + Z. Когда я попытался запустить его снова, он сообщает мне, что порт 1001 уже используется. В живой среде всегда есть риск, что сценарий может потерпеть крах, или что-то еще может заставить его закончить рано. Как автоматически отсоединить этот порт до его подключения? Я собираюсь использовать порт, который, как я знаю, ничего больше никогда не будет использовать, поэтому его можно автоматически отменить.Unbind порт, используемый из прошлого сервера веб-сервера Ratchet

В настоящее время мой скрипт сервера является основным.

$server = IoServer::factory(
    new HttpServer(
     new WsServer(
      new Chat() 
     ) 
    ), 
    1001 
); 

$server->run(); 

Я последовал за руководство найти здесь http://socketo.me/docs/hello-world. Все работает так, как ожидалось, я просто застрял в этом вопросе.

Я бегу PHP 5.4 на Centos 7.

ответ

0

Я не смог найти способ сделать это с помощью командной строки. Единственное решение, которое я мог видеть, может быть проблемой, если кто-то узнает, - это убить скрипт, отправив сообщение на веб-сайт. Каждое сообщение на сервере websocket имеет «действие». Затем коммутатор сделает что-то для каждого действия. Создайте случайное действие, которое невозможно догадаться. В этом переключателе используйте die();. Это убьет скрипт и отвяжет порт, поэтому вам не нужно искать PID и убивать его вручную, когда сервер необходимо перезапустить.

Это может быть использовано для быстрого перезапуска сценария .sh. Используйте php, чтобы вызвать вызов websocket, чтобы убить сервер и вызвать его из сценария bash, а затем вызвать php server.php и прочь.