Настройка websockets без командной строки
Как я могу следовать руководству, подобному этому, без использования командной строки?
http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/
Мне нужно иметь возможность использовать веб-порты, но иметь общий сервер и не иметь доступа к командной строке.
Я не могу просто запустить script из браузера, если script перестанет работать, когда я закрываю браузер/отключен от Интернета.
Ответы
Ответ 1
Предполагая, что ваш хостинг-провайдер поддерживает задания crontab и cron (большинство из них), добавьте следующее задание в crontab:
@reboot nohup php /path/to/server.php 2>&1 >/dev/null &
Кроме того, вам нужно запустить его сейчас, поэтому просто создайте следующий файл PHP и получите его один раз в своем браузере:
<?php shell_exec('nohup php /path/to/server.php 2>&1 > /dev/null &');?>
Это должно сделать трюк. Надеюсь, ваш хостинг-провайдер позволяет выполнять вызовы execve(). Удачи!
Ответ 2
Хорошо попробуйте запустить Server.php в браузере. В большинстве случаев php-cli- script также отлично работает в браузере (до тех пор, пока не используется некоторая функция командной строки, такая как argv/argc и т.д.). На другой вкладке браузера в другом браузере вы можете запускать обычный URL-адрес, например, снимок экрана в данном учебнике.
Одна важная вещь. Пожалуйста, проверьте, что сокет и другие необходимые расширения включены или нет на вашем общем сервере.
Ответ 3
Я не знал о директиве CRON @reboot
до сих пор, поэтому решение @Octav O, вероятно, намного лучше. Но при тестировании я нашел следующий код (найденный в учебник по сарану Saran) весьма полезен.
Сохраните это как websocket_launch.sh
в том же каталоге, что и server.php
...
PID=`ps -aef | grep "server.php" | grep -v grep | awk '{print $2}'`
if [ -z $PID ]
then
#echo "Launching now"
nohup php server.php > error_log &
else
#echo "Running as PID $PID"
fi
... затем запустите оболочку script с CRON каждую минуту. script проверяет, запущен ли сервер .php, а если нет, запускает его.