Php 如何防止此脚本回显任何内容?
脚本一次执行多个URL,并自动回显URL的内容,我想阻止此脚本回显任何内容,但我没有看到任何类似Php 如何防止此脚本回显任何内容?,php,curl,Php,Curl,脚本一次执行多个URL,并自动回显URL的内容,我想阻止此脚本回显任何内容,但我没有看到任何类似echo'something'的行除了我注释掉的行 以下是脚本: function batch_execute($urls) { $i = 0; $block = array(); $curl_handles = array(); foreach ($u
echo'something'的行代码>除了我注释掉的行
以下是脚本:
function batch_execute($urls)
{
$i = 0;
$block = array();
$curl_handles = array();
foreach ($urls as $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 as $a_curl_handle)
{
$i++;
curl_multi_add_handle($curl_multi_handle, $a_curl_handle);
$block[] = $a_curl_handle;
if (($i % 10 == 0) or ($i == count($curl_handles)))
{
$running = NULL;
do
{
$running_before = $running;
curl_multi_exec($curl_multi_handle, $running);
if ($running != $running_before)
{
// echo("Waiting for $running sites to finish...\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);
if ($curl_error)
{
// echo(" *** cURL error: ($curl_errno) $curl_error\n");
}
curl_multi_remove_handle($curl_multi_handle, $handle);
}
$block = array();
}
}
curl_multi_close($curl_multi_handle);
}
函数批处理执行($URL)
{
$i=0;
$block=array();
$curl_handles=array();
foreach($url作为$url)
{
$curl_handles[$url]=curl_init();
curl_setopt($curl_句柄[$url],CURLOPT_url,$url);
curl_setopt($curl_handles[$url],CURLOPT_CONNECTTIMEOUT,100);
}
$curl_multi_handle=curl_multi_init();
foreach($a\u curl\u handles作为$a\u curl\u handle)
{
$i++;
curl\u multi\u add\u handle($curl\u multi\u handle,$a\u curl\u handle);
$block[]=$a\u curl\u句柄;
如果($i%10==0)或($i==count($curl\u handles)))
{
$running=NULL;
做
{
$running_before=$running;
curl\u multi\u exec($curl\u multi\u handle,$running);
如果($running!=$running\u之前)
{
//echo(“等待$running sites完成…\n”);
}
}而($running>0);
foreach($block作为$handle)
{
//$code=curl\u getinfo($handle,CURLINFO\u HTTP\u code);
//$curl\u errno=curl\u errno($handle);
$curl\u error=curl\u error($handle);
如果($curl\u错误)
{
//echo(“***卷曲错误:($cURL\u errno)$cURL\u error\n”);
}
curl\u multi\u remove\u handle($curl\u multi\u handle,$handle);
}
$block=array();
}
}
curl\u multi\u close($curl\u multi\u handle);
}
帮助:)使用ob\u start()
打开输出缓冲区将在打印到屏幕之前捕获所有输出
然后用ob\u end\u clean()
或ob\u end\u flush()
关闭缓冲区。Flush将在关闭缓冲区之前打印缓冲区的内容
查看有关输出控件的更多信息。创建单个cURL句柄时,将选项CURLOPT\u RETURNTRANSFER
设置为1
,cURL在发出请求时不会将内容输出到stdout
请求完成后,如果要访问单个句柄的响应体,请调用该句柄,它将返回响应的内容
您可以使用CURLOPT\u NOBODY
,但其副作用是请求被更改为HEAD
请求,许多服务器可能不接受该请求
使用输出缓冲也是一种可能,但如果需要将响应正文与单个请求隔离开来,则没有帮助。尝试打开输出缓冲(ob\u start()
)。我相信您需要将CURLOPT_NOBODY
设置为true
。嘿@Matt非常感谢:)请记住,完成后关闭输出缓冲区(并清理它)是有效的<代码>ob\u end\u clean()
不刷新。。。清洁的哈哈,flush将输出到浏览器。使用ob\u end\u clean()