1

cURLを介してAPIに接続するphp/ajaxアプリケーションを作成しました。私たちは無期限に接続を維持するためにそれを構築しました、それはうまくいきました、私たちは幸せでした、それを定期的に使用し、そして他のプロジェクトに移りました。

最近再訪したところ、さまざまな間隔でタイムアウトが発生し始めていることがわかりました。スクリプトをチェックして、cURL呼び出しに影響を与える可能性のあるものを探しました。何もない。

単純なcURLスクリプトには、次のオプションがあります。

$sch = curl_init();
curl_setopt( $sch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($sch, CURLOPT_URL, $test_url);
curl_setopt($sch, CURLOPT_WRITEFUNCTION, 'get_data');
curl_setopt($sch, CURLOPT_NOSIGNAL, 1);
curl_setopt($sch, CURLOPT_TIMEOUT,0);
$output = curl_exec($sch); 

私の理解では、NOSIGNALオプションとTIMEOUTオプションの効果が、接続を開いたままにしていたことです。

しかし、それは機能していません。

2つの質問があります。
1)コーディングに関するアイデア、cURLに欠けているもの、または接続に影響を与える可能性のあるコードの他の場所がある可能性がありますか?接続に何が影響する可能性がありますか?
2)コーディングに問題がない場合、アップストリーム接続を確認するにはどうすればよいですか。接続が実際に切断されている場所と理由をどのように検出しますか?

ご提案ありがとうございます。ご不明な点やその他の情報が必要な場合は、お気軽に投稿してください。

ありがとう

サム

4

1 に答える 1

0

CURLOPT_CONNECTTIMEOUT同様に設定する必要があります:

curl_setopt($sch, CURLOPT_CONNECTTIMEOUT,0);

また、追加してみてください

if (curl_errno($sch) > 0) {
    error_log(sprintf(
        "Curl error %d: %s for %s\n", 
        curl_errno($sch), 
        curl_error($sch), 
        $test_url
    ));
}

正確に何が失敗しているかを確認します。

于 2012-10-03T00:15:09.753 に答える