2009-05-19 9 views
0

ファイルが私のサーバ上にあり、URLが正しいことがわかっている場合、fopenがファイルをタイムアウトさせる理由は何ですか?PHP関数がタイムアウトしましたか?

アップデート:申し訳ありませんが、私はこれはPHPで言及する必要があります。 コードは次のとおりです。

fopen($url, 'r'); 

私は、ファイルの相対パスに置けば、それは動作しますが、$ URLは(それはgoogle.comのために働く)私のサーバー内のURLでない場合。助けてくれてありがとう。

Alaitnikの答えが正しい。この問題は、私が自分のサーバーファイルにイーサネットインターフェイス経由でアクセスする場合にのみ表示されます。これをどうすれば解決できますか?私はイーサネットインターフェイスからファイルにアクセスできるようにする必要があります。なぜなら、URLは動的に読み込まれるからです(ワードプレスCMSから生成されているため、URLは技術的に私のサーバー上のファイルとして存在しません)。

+0

C関数fopenについて質問していますか?その場合、fopenはURLではなくファイルを開くために使用されます。そして「タイムアウト」とはどういう意味ですか? –

+0

Neilが示すとおり、詳細を追加する必要があります。あなたが話している機能は明らかではなく、使用しているプログラミング言語についても言及していません(タグ付けが不十分です)。 – unwind

答えて

4

ini_set ( 'default_socket_timeout'、2); fopen $ urlを開く前に と入力してください。これは実際に応答せ​​ずにデフォルトのソケット接続タイムアウトを設定しました。 Stream_set_timeoutは、fopnまたはソケットオープン関数を使用して確立されたストリームのタイムアウトを設定します。 これはあなたに役立つかもしれません。

+0

for NO limit init_set( 'default_socket_timeout'、 - 1) –

+1

@VirgiliGarciaあなたはinit_set - > ini_setに入力ミスをしています。しかし、それは正常に動作します... thx – iiic

0

URLのHTMLを取得しようとしている場合は、fopenではなくcurlを使用することをおすすめします。

fopenはローカルファイルで最もよく使用されますが、ネットワークリソースの特殊性をどのように扱うかを「認識」していません。

3

自分のサーバーからファイルを同じサーバーで実行されているプログラムからHTTPプロトコルを使用してダウンロードしようとしているようですか?

この場合、タイムアウトの問題は、Webサーバーまたはネットワーク構成に関連している可能性があります。タイムアウトは、通常はどちらか一方のみ起こるので:

  1. サーバーが本当に答えを返送するのに長い時間がかかっている、または
  2. TCPコネクションは、例えば

をブロックされている、それがいる可能性がありローカルファイアウォールルールは、これらのクエリがイーサネットインターフェイスから来た場合にのみwww.example.comへのアクセスを許可しますが、ローカルに作成された接続はループバックインターフェイスを経由しようとします。

多分あなたの「allow_url_fopenをは」(php.iniファイルまたはするphpinfoをチェック 「オフ」に設定されている
+0

うわー、あなたは正しいです。これをどうすれば解決できますか? URLが動的に読み込まれるため、イーサネットインターフェイスからファイルにアクセスできる必要があります(ワードプレスCMSから生成されているため、URLは技術的に私のサーバー上のファイルとして存在しません) –

+0

これを修正するには、正確にトラフィックをブロックしているものについて同じファイルを要求しても、ホスト名ではなくURLにlocalhostを指定するとどうなりますか?名前ベースの仮想ホスティングのためにそれが動作しない場合は、アドレス127.0.0.1のhostsファイルにWebサイトの名前を入れてください – Alnitak

0

は私にこれを解決するために年齢を取ったが、ここで私は、オリオン座ゼータ星のおかげでそれを見つけました。 ホスト名の代わりにURLにlocalhostを付けてファイルを開くと、私は何をしたのですか?

関連する問題