2012-01-05 24 views
1

友人のためのアプリケーションを開発しました。彼は最近、過負荷問題のために専用サーバーを変更しました。PHPでfsockopenに接続できません(接続がタイムアウトしました)

この移行以降、サイトの一部はもう機能しません。これは、PHPでのソケット接続です。この部分で

は、私はソケットを開くために、機能を実現して他のサーバとの接続をetablishしなければならなかった:コードで

function openSocket($host, $port) { 
    $fp = fsockopen($host, $port, $errno, $errstr, 30); 

    if (!$fp) { 
     return 0; 
    } 

    fputs($fp, $envoi); 

    return $fp; 
} 

、私はそのようにこの機能を使用:

$sock = openSocket($host, $port); 

while (!feof($sock)) { 
    echo fread($sock, 8192); 
} 

fclose($sock); 

時々、私は数分間のソケットを開く必要があり、移行するので、私の友人は彼のログにこのエラーがあります:

PHPの警告:fsockopenの():に接続できません...:80(接続 がタイムアウト)...、リファラで:...

具体的な構成は、PHPにあった場合、私は/検索Apacheしかし、私は何も見つかりませんでした。

私はfsockopenまたはstream_set_timeout()関数の最後のパラメータを増やそうとしましたが、何も機能しませんでした。

答えて

1

2台のコンピュータ間の信頼できる接続があり、あなたの助けをありがとう!

+0

これは私が制御できない外部サーバーとの接続です。 – skurty

0

一部のホスティングプロバイダと専用サーバーセットアップでは、ファイアウォール設定で送信接続を許可するものがあります。これは、異常なボットや悪用スクリプトがサーバーから侵害された場合に接続を確立するのを防ぐのに便利です。あなたをブロックしている可能性のある出入りするファイアウォールルールがあるかどうかを確認します。

他の理由 - リモートサーバー上のイングレス/インバウンドファイアウォールルールが、接続試行、またはマシン間の潜在的な接続性を拒否しています。

+0

ありがとうございます。私は友人がサーバーと同じ時間にホストを変更したと思う。私は彼とホストと一緒に見て、あなたに知らせるでしょう。 – skurty

0

でも、私は同じ問題に直面していました。
私はクライアント用のサイトを開発していました。
私は専用のタイムサーバから時間を設定したいと思っていました。
したがって、私はUDPを使用してそのサーバーへの接続を確立しようとしました。 たくさん試しましたが失敗しました。その後、私は、接続を確立するために開かれている必要があったいくつかのポートが閉じられていることを発見しました。
必要なポートをチェックアウトし、それぞれのポートが開かれていることを確認してください。

関連する問題