1

スクリプトは一度に複数の URL を実行し、URL のコンテンツを自動的にエコーします。このスクリプトが何もエコーしないようにしたいのですが、echo 'something';コメントアウトした行以外のような行は表示されません。

これはスクリプトです:

    関数 batch_execute($urls)
        {
            $i = 0;
            $block = 配列();
            $curl_handles = 配列();

            foreach ($urls を $url として)
            {
                $curl_handles[$url] = curl_init();
                curl_setopt($curl_handles[$url], CURLOPT_URL, $url);
                curl_setopt($curl_handles[$url], CURLOPT_CONNECTTIMEOUT, 100);
            }

            $curl_multi_handle = curl_multi_init();

            foreach ($curl_handles を $a_curl_handle として)
            {
                $i++;

                curl_multi_add_handle($curl_multi_handle, $a_curl_handle);

                $block[] = $a_curl_handle;

                if (($i % 10 == 0) または ($i == count($curl_handles)))
                {
                    $running = NULL;

                    行う
                    {
                        $running_before = $running;

                        curl_multi_exec($curl_multi_handle, $running);

                        if ($running != $running_before)
                        {
    // echo("$running サイトの終了を待っています...\n");
                        }

                    while ($running > 0);

                    foreach ($block as $handle)
                    {
    // $code = curl_getinfo($handle, CURLINFO_HTTP_CODE);

    // $curl_errno = curl_errno($handle);

                        $curl_error = curl_error($ハンドル);

                        もし ($curl_error)
                        {
    // echo(" *** cURL エラー: ($curl_errno) $curl_error\n");
                        }

                        curl_multi_remove_handle($curl_multi_handle, $handle);
                    }

                    $block = 配列();
                }
            }

            curl_multi_close($curl_multi_handle);
        }

ヘルプ :)

4

2 に答える 2

3

で出力バッファをオンにするob_start()と、画面に印刷する前にすべての出力がキャプチャされます。

ob_end_clean()次に、またはのいずれかでバッファを閉じますob_end_flush()。フラッシュは、バッファを閉じる前にバッファの内容を出力します。

出力コントロールの詳細については、こちらをご覧ください。

于 2012-08-16T14:37:05.707 に答える
0

個々のcURLハンドルを作成する場合は、オプションCURLOPT_RETURNTRANSFERをに設定する1と、cURLは要求を行っているときにコンテンツをstdoutに出力しません。

リクエストが完了したら、個々のハンドルのレスポンス本文にアクセスする場合は、curl_multi_getcontent()そのハンドルを呼び出すと、レスポンスのコンテンツが返されます。

を使用できますCURLOPT_NOBODYが、副作用として、HEAD要求が多くのサーバーが受け入れない要求に変更されることがあります。

出力バッファリングを使用することも可能ですが、応答本文を個々の要求から分離する必要がある場合は役に立ちません。

于 2012-08-17T21:05:43.960 に答える