Подтвердить что ты не робот

Настройка websockets без командной строки

Как я могу следовать руководству, подобному этому, без использования командной строки?

http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/

Мне нужно иметь возможность использовать веб-порты, но иметь общий сервер и не иметь доступа к командной строке.

Я не могу просто запустить script из браузера, если script перестанет работать, когда я закрываю браузер/отключен от Интернета.

4b9b3361

Ответ 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, а если нет, запускает его.