2017-04-26 12 views
2

は、次のPHPコードを見て無視されている:ローカルGAE環境(私のマシン)上でそれを実行しているGoogle App Engineの(GAE)PHPのcURLタイムアウト

$start = time(); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://gmaxil.com'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Java/1.7.0_60'); 
curl_setopt($ch, CURLOPT_TIMEOUT, 2); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_exec($ch); 

$end = time(); 

var_dump(curl_error($ch)); 
var_dump($end-$start); 

curl_close($ch); 

を、私は次の応答(〜を取得し、2秒後に):

文字列(43) "の解決は2529ミリ秒後にタイムアウトした" INT(2)

GAEリモート環境でそれを実行して、私は次の応答(〜40秒緯度を取得しますER):

文字列(34) "のホストを解決できませんでした 'gmaxil.com'" のint(40)

なぜGoogle App EngineがcURLのタイムアウトオプションを無視しているのですか?

+0

私はタイムアウトを無視していないと推測しています。タイムアウトしていないからです。それはちょうどすぐに失敗している。 –

+0

@AlexHowanskyしかし、なぜ私は地元の環境と本番環境の間で行動が違うのですか? –

+0

ローカルはDNSを使用しているためです。リモートが直ちに失敗するDNSが壊れています。 (再び、それは推測です...) –

答えて

1

このリンクを確認してください。 PHP cURL: CURLOPT_CONNECTTIMEOUT vs CURLOPT_TIMEOUT

CURLOPT_TIMEOUTは、libcurlがデータをサーバーに転送できる最大時間です。これは、サーバーが設定したタイムアウトで応答することを意味するものではありません。

関連する問題