在没有命令行的情况下设置websockets

时间:2013-02-15 05:47:04

标签: php websocket phpwebsocket

如何在不使用命令行的情况下遵循此类教程?

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

我需要能够使用websockets但是拥有共享服务器而无法访问命令行。

我不能简单地从浏览器运行脚本,如果我关闭浏览器/断开互联网连接时脚本将停止运行。

3 个答案:

答案 0 :(得分:15)

假设您的共享托管服务提供商支持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()调用。祝你好运!

答案 1 :(得分:1)

试试在浏览器上运行Server.php。大多数情况下,php-cli脚本在浏览器上也能正常工作(直到使用某些命令行功能,如argv / argc等)。在另一个浏览器的其他浏览器选项卡上,您可以在给定的教程中运行常用的URL,例如屏幕截图。

重要的是,请检查您的共享服务器上是否启用了套接字和其他必需的扩展。

答案 2 :(得分:0)

直到现在我才知道CRON的@reboot指令,所以@Octav O解决方案可能要好得多。但是在测试时,我发现以下代码(在Saran's websocket tutorial上找到)非常有用。

将此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

...然后每分钟用CRON运行shell脚本。该脚本检查server.php是否正在运行,如果没有,则启动它。