PHP cUrl返回不带var_dump的空字符串


PHP cUrl returning empty string without var_dump

我使用cUrl为一些产品刮取价格。几个月以来,一切都很顺利。

现在在cURL之后,我得到一个空结果。。显然地因为如果我对返回的变量执行var_dump,它会起作用。。。我不明白var在打印之前怎么会是空的?!

这是我完整的cURL功能:

function linkcurl($targetURL){
$linkcurl = curl_init();
curl_setopt($linkcurl, CURLOPT_COOKIEJAR, dirname(__FILE__) . "/cookie.tmpz");
curl_setopt($linkcurl, CURLOPT_COOKIEFILE, dirname(__FILE__) . "/cookie.tmpz");
curl_setopt($linkcurl, CURLOPT_VERBOSE, true);
//curl_setopt($linkcurl, CURLOPT_USERAGENT, random_user_agent());
curl_setopt($linkcurl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($linkcurl, CURLOPT_RETURNTRANSFER, TRUE);   
curl_setopt($linkcurl, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($linkcurl, CURLOPT_HEADER, 0); // debug headers sent - 1
curl_setopt($linkcurl, CURLOPT_URL, $targetURL);
$datax = curl_exec ($linkcurl);
curl_close($linkcurl);
return $datax;
}
$prdhtml = linkcurl($product_page_url); //

不,我确实试图在我的cURL中添加更多选项,但这并没有改变什么:

curl_setopt($linkcurl, CURLOPT_VERBOSE, true);
curl_setopt($linkcurl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($linkcurl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($linkcurl, CURLOPT_AUTOREFERER, TRUE);

同样的结果,什么都没有改变。

我确实尝试过在我的curl函数中添加一个var_dump ob_start,如下所示:

ob_start();
return curl_exec ($ch);
ob_end_clean();

还是什么都没有。

我还尝试捕获函数外的cURL输出,如下所示:

ob_start();
var_dump($prdhtml);
$prdhtml = ob_get_clean();

还是。。什么都没变。。。我还尝试了print_r和var_export的变体。。。没有什么

我还尝试了cURL的固定用户代理和随机用户代理。。没有什么

它唯一有效的时间(有时,不是总是(是如果我做一个简单的var_dump($prdhtml(;字符串的结果,我不明白这和ob_start有什么不同。

我不明白问题出在哪里以及如何解决。。。

编辑:

示例代码和小提琴:http://codepad.viper-7.com/aePjg7

function linkcurl($targetURL){
$linkcurl = curl_init();
curl_setopt($linkcurl, CURLOPT_COOKIEJAR, dirname(__FILE__) . "/cookie.tmpz");
curl_setopt($linkcurl, CURLOPT_COOKIEFILE, dirname(__FILE__) . "/cookie.tmpz");
curl_setopt($linkcurl, CURLOPT_RETURNTRANSFER, TRUE);   
curl_setopt($linkcurl, CURLOPT_CUSTOMREQUEST, 'GET');   
curl_setopt($linkcurl, CURLOPT_URL, $targetURL);
$datax = curl_exec ($linkcurl);
 if ($datax) {
curl_close($linkcurl);
return $datax;
} else {
return curl_error ( $linkcurl );
}
}
$prdhtml = linkcurl($product_page_url); //