int fsockopen
(string hostname, int port, int [errno], string [errstr], double
[timeout]);Internet (AF_INET) ドメインまたは Unix (AF_UNIX)ドメインにおいて ストリーム接続を初期化します。 Internet ドメインの場合、 hostname のポート port へのTCPソケット接続がオープンされます。 Unix ドメインの場合、hostname あhソケットへの パスとして使用され、port はこの場合0とする 必要があります。 オプションのtimeout により接続システムコール がタイムアウトするまでの秒数を指定することが可能です。
fsockopenは、ファイルポインタを返します。 このファイルポインタは、 (fgets,fgetss, fputs, fclose, feof のような) 他のファイル関数で使用可能です。
呼び出しに失敗すると FALSE が返され、オプションの errnoおよびerrstr 引数が指定されている場合、システムレベル の connect() コールで生じた 実際のシステムレベルエラーを示すように設定されます。 errno は 0 なのに、返り値がFALSEであれば、connect()の呼び出しの前に エラーが発生したことを示します。この場合、おそらくはソケットの初期化に 原因があります。引数 errno および errstr は参照渡しでなければならない ことに注意してください。
環境により、UNIXドメインまたはオプションの接続タイムアウトは利用 できません。
ソケットはデフォルトでブロックモードで開かれます。 set_socket_blockingを使用して、 非ブロックモードに切換えることができます。
例 1. fsockopen の例
$fp = fsockopen("www.php.net", 80, &$errno, &$errstr, 30); if(!$fp) { echo "$errstr ($errno)<br>\n"; } else { fputs($fp,"GET / HTTP/1.0\n\n"); while(!feof($fp)) { echo fgets($fp,128); } fclose($fp); }