1

该脚本一次执行多个 URL,并自动回显 URL 的内容,我想阻止此脚本回显任何内容,但echo 'something';除了我注释掉的行之外,我没有看到任何行。

这是脚本:

    函数批处理执行($urls)
        {
            $i = 0;
            $块 = 数组();
            $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_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($handle);

                        如果 ($curl_error)
                        {
    // echo(" *** cURL 错误: ($curl_errno) $curl_error\n");
                        }

                        curl_multi_remove_handle($curl_multi_handle, $handle);
                    }

                    $块 = 数组();
                }
            }

            curl_multi_close($curl_multi_handle);
        }

帮助 :)

4

2 回答 2

3

打开输出缓冲区ob_start()将在打印到屏幕之前捕获所有输出。

ob_end_clean()然后使用或关闭缓冲区ob_end_flush()。Flush 将在关闭缓冲区之前打印缓冲区的内容。

在此处查看有关输出控件的更多信息。

于 2012-08-16T14:37:05.707 回答
0

创建单个 cURL 句柄时,将选项设置为CURLOPT_RETURNTRANSFER1并且 cURL 在发出请求时不会将内容输出到标准输出。

请求完成后,如果您想访问单个句柄的响应正文,请调用curl_multi_getcontent()该句柄,它将返回响应的内容。

您可以使用CURLOPT_NOBODY,但副作用是请求更改为HEAD许多服务器可能不接受的请求。

使用输出缓冲也是一种可能,但如果您需要将响应正文与单个请求隔离开来,则无济于事。

于 2012-08-17T21:05:43.960 回答