次のphpコードを使用して、phpソケット接続を介してリモートサーバーに接続してリクエストを送信しています。
<?php
$host = "X.X.X.X";
$port = 1234;
$message = "<request>test</request>";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
stream_set_timeout($socket, 10);
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
//echo "Reply From Server :".$result;
$info = stream_get_meta_data($socket);
if (isset($info['timed_out']) && $info['timed_out'])
{
echo 'Connection timed out!';
}
else
{
var_dump($result);
}
// close socket
socket_close($socket);
?>
確認したとおり、リモート マシンはリクエストを受信し、同じセッションで適切なレスポンスを送信しています。しかし、残念ながら、スクリプトを実行すると次の応答が返されます -
504ゲートウェイのタイムアウト。サーバーが時間内に応答しませんでした。
Putty (コードが実行されたのと同じサーバー) から試行すると、ほぼ瞬時に (1 秒未満で) 応答が得られます。
応答をブロックするファイアウォールが実行されていません。すべての VPN トラフィックは、telnet の要求と応答に見られるように、ブロックされることなくトンネルを通過します。
今、このphpスクリプトを介して応答を得られない正確な理由を理解することができません. 多くのチュートリアルとサンプル コードを試しましたが、うまくいきませんでした。:(
会員の皆様、お助けください。