私はPHPに非常に慣れていないので、これは単純なことかもしれません。とにかく、私はPHPスクリプト(Webクライアントによってアクティブ化される)とローカルプロセス(C ++で記述される)の間の双方向通信を作成しようとしています。PHPスクリプトは、C ++プロセスに情報を送信してから、応答を待つ必要があります。私の問題は、この種の通信を設定する唯一の方法は、socket_bindを使用することであるように思われることですが、そうすると、「アドレスはすでに使用されています」というエラーで失敗します。問題のソケットファイル/tmp/ sockは、継続的に実行されているC ++プロセスによってすでに作成されています(PHPスクリプトでは起動できません)。socket_connectを使用して、C ++プロセスに何かを書き込むだけで、問題なく動作します。しかし、PHPスクリプトからそのソケットをリッスンする前に、バインドする必要があります。これが私のコードです:
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
//Adapted from http://www.php.net/manual/en/sockets.examples.php
if (($sock = socket_create(AF_UNIX, SOCK_STREAM,0)) === false)
{
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
if (socket_bind($sock, '/tmp/sock') === false) //Fails here
{
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
....
ありがとう -