我正在开发一个包含聊天系统的 iOS 应用程序(使用这些说明)。该 api 在 LAMP 服务器上运行,因此我使用ReactPhp而不是Twisted for python 作为套接字处理程序在客户端/服务器和服务器/客户端之间进行通信。
这是我用于文件socket.php的代码
<?
require 'vendor/autoload.php';
$port = 1337;
$host = '127.0.0.1';
$app = function ($request, $response) {
$response->writeHead(200, array('Content-Type' => 'text/plain'));
$response->end('Hello '.time()."\n");
};
$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http = new React\Http\Server($socket, $loop);
$http->on('request', $app);
echo 'Server running at http://'.$host.':'.$port."\n";
$socket->listen($port, $host);
$loop->run();
?>
然后我就在终端上运行它:
php socket.php
问题:
它工作正常,但是......如果我关闭终端(或使用 ctrl+Z 停止进程),端口将停止监听。从 Apache 启动的那一刻起,如何让套接字一直监听?
关闭终端后(案例 1),如果我
php socket.php
再次尝试运行,我会收到以下消息:无法绑定到 tcp://127.0.0.1:1337:地址已在使用中- 如果端口已在使用中,那为什么关闭终端后无法访问?