gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:50:31 26 4
gpt4 key购买 nike

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

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

是的,我提到过一件事,我只需要运行一次脚本,然后脚本将继续运行,而且托管服务提供商还允许设置 cron 作业

请帮助,在此先感谢。

最佳答案

没有 SSH 访问您的共享主机是非常不稳定的。也就是说……

您可以使用 exec从触发的脚本在命令行上运行某些东西。例如,如果您有一个从 http://mysite.com/server/start 等 URL 调用的 Controller 操作,您可以嵌入以下行:

$lastLine = exec("php server.php");

当然,这个命令在命令完成之前不会返回,所以你永远不会从这个脚本中得到响应(除非它失败)。所以我会使用 popen ,这将 fork 进程并立即返回,允许您的 Controller 返回响应。

$handle = popen("php server.php", "r");

在某些时候,您可能想要停止此服务器。您可以使用 passthruposix_kill使用一点 unix CLI 魔法来完成这项工作,也许在您从 http://mysite.com/server/stop 等 URL 调用的另一个 Controller 操作中,你可以嵌入:

$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);

关于php - 在共享主机上用 php 启动一个 websockets 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com