2011-11-05 3 views
2

解決策が見つからない問題が発生しました。さらに悪いことに、他の誰もこの問題を抱えていないようですので、私はおそらく非常にばかげた何かをしています。要求に応じてcURLがハングアップし、タイムアウトが進行するのを待ちます。

背景情報:AJAXリクエストを別のサーバーに転送するプロキシのようなページを作成しようとしています。これは同じドメインポリシーを迂回するものです。このコードでは、POST変数を取り出し、別のページに転送してから結果を返すだけです。それは動作していますが、1つの理由があります:タイムアウトが継続するのを待つたびに。私は今すぐ1秒にしているので、今は大丈夫ですが、私はむしろ速い応答と適切なタイムアウトを持っています。ここで

は私のコードです:

// create a new cURL resource 
$call = curl_init(); 

// set URL and other appropriate options 
curl_setopt($call, CURLOPT_URL, $url); 
curl_setopt($call, CURLOPT_POST, true); 
curl_setopt($call, CURLOPT_POSTFIELDS, $params); 
curl_setopt($call, CURLOPT_HEADER, false); 
curl_setopt($call, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($call, CURLOPT_CONNECTTIMEOUT, 1); 

// grab URL and pass it to the browser 
$response = curl_exec($call); 

// close cURL resource, and free up system resources 
curl_close($call); 

echo $response; 

私は「接続:閉じる」送信しようとしたことで、ヘッダを、ターゲット・コードは、それがフラッシュし、コンテンツの長さを設定する(実行中に行われますように指定するようにするには、いくつかの方法、die()など)。この時点で、私は実際に何が起こっているのか分かりません。私が最も驚いたのは、同様の問題を持つ人がいないことです。

誰が私を助けることができますか?

+0

奇妙なことに、あなたがタイムアウトを待っていると記述するのは間違いですが、タイムアウトは最大値を意味します。タイムアウトが指定されていない場合(または値として0を指定した場合)、アプリケーションの動作は何ですか? –

+0

私はタイムアウト値として0を試していませんが、タイムアウトが指定されていないと、約15秒かかります。 –

答えて

0

これは、サーバーが実際に要求を完了していない場合に意味があります。これは、ページストリーミングまたはサービスストリーミングのシナリオで予想されます。サーバーが実際に各要求に対して完全な完全なHTTP応答を返していることを確かめていますか?

+0

私はそう考える、ブラウザから直接ページを呼び出すことは問題を作成しない。私はそれを見てみましょう、そこに問題があるかもしれません。 –

関連する問題