在共享主机上用php启动websockets服务器

在共享主机上用php启动websockets服务器,php,websocket,hosting,localhost,Php,Websocket,Hosting,Localhost,我使用WebSockets()在PHP中实现了一个聊天应用程序,在我的本地主机上测试它时,我必须通过命令“PHP server.PHP”运行WebSockets服务器,该命令在本地主机上启动服务器,文件一直运行,直到我在Ubuntu终端上按“Ctrl+c”。我的意思是它继续运行while循环,这是很正常的,因为服务器应该能够监听请求 现在我的疑问是,我已经在一个共享主机上托管了这个应用程序,它没有给我SSH访问权限,我的意思是我无法在以前运行命令的地方获得一个类似终端的界面,那么我现在如何运行s

我使用
WebSockets
()在
PHP
中实现了一个聊天应用程序,在我的本地主机上测试它时,我必须通过命令
“PHP server.PHP”
运行WebSockets服务器,该命令在本地主机上启动服务器,文件一直运行,直到我在Ubuntu终端上按“Ctrl+c”。我的意思是它继续运行while循环,这是很正常的,因为服务器应该能够监听请求

现在我的疑问是,我已经在一个共享主机上托管了这个应用程序,它没有给我
SSH
访问权限,我的意思是我无法在以前运行命令的地方获得一个类似终端的界面,那么我现在如何运行
server.php
脚本来启动我的服务器呢

是的,我提到的一件事是,我只需要运行一次脚本,然后脚本将继续运行,并且宿主提供程序允许设置
cron作业


请帮助,提前感谢。

没有SSH访问共享主机的权限是非常危险的。也就是说

可以使用从触发的脚本在命令行上运行某些内容。例如,如果您有一个从URL调用的控制器操作,如,您可以嵌入以下行:

$lastLine = exec("php server.php");
当然,该命令在命令完成之前不会返回,因此您永远不会从该脚本获得响应(除非它失败)。所以我将使用,它将分叉进程并立即返回,允许您的控制器返回响应

$handle = popen("php server.php", "r");
在某个时候,您可能想要停止此服务器。您可以使用并使用一点unix CLI魔术来实现这一点,也许可以在从URL调用的另一个控制器操作中实现,例如,您可以嵌入:

$output = passthru('ps ax | grep server\.php');
$ar = preg_split('/ /', $output);
if (in_array('/usr/bin/php', $ar)) {
    $pid = (int) $ar[0];
    posix_kill($pid, SIGKILL);

实际上,有很多方法可以让守护进程在没有shell访问的情况下运行,但是托管公司会阻止shell访问,因为他们不希望您运行守护进程


您必须在shell访问的服务器上进行访问。我的意思是,您的应用程序必须有VP,而共享主机对您没有用处。

使用shell\u exec从可以触发的脚本运行命令。代码应该是这样的:

shell_exec("php -q server.php");

你能解释更多或者提供链接,代码来启动共享主机上的php websockets服务器吗