2

cURLを使用してポストリクエストを実行するPHPコードがあります。これは、パフォーマンスのためにcurl_multi_*関数を使用します。

ホストされているPHPサーバーではすべて正常に動作します。

しかし、127.0.0.1のWAMPServerでは失敗します。単一のcURL要求は、WAMPServerで問題なく機能しcurl_multi_select()ますが、スクリプトが最終的にタイムアウトするまで、-1を返すだけです。

コード...は、curl_multi_execのPHP.netのマニュアルページの例1です。http://www.php.net/manual/en/function.curl-multi-exec.phpこれ が無限ループの原因となるスニペットです。

$active = null;

do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

Vistaのファイアウォールを無効にしてテストしました。

誰かがcurl_multi_*をWAMPServerで動作させる方法を知っていますか、またはPHPスクリプト内からcurl_multi_ *のサポートを検出して、フォールバックを作成できる方法はありますか?

4

1 に答える 1

6

function_exists('curl_multi_select')サポートを検出するために使用します。

http://php.net/manual/en/function.function-exists.php

于 2013-01-07T20:40:52.143 に答える