チャット システムが含まれている iOS アプリを開発しています (これらの手順を使用します)。API は LAMP サーバー上で実行されるため、クライアント/サーバーとサーバー/クライアントの間で通信するためのソケット ハンドラーとして PythonのTwistedの代わりにReactPhpを使用しました。
これは、ファイル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 にバインドできませんでした: アドレスは既に使用されていますターミナルを閉じるとアクセスできなくなりますか?