2015-01-18 6 views
1

Я использовал cUrl для снижения цен на некоторые продукты. Все работало хорошо, несколько месяцев, до сих пор.PHP cUrl, возвращающий пустую строку без var_dump

Теперь после 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 Butit не меняет вещь:

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

Тот же результат, ничего не изменилось.

Я действительно пытался добавить var_dump ob_start к моей завитка функции, как это:

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

Еще ничего.

Я также попытался захватить локоны выходов за пределы функции, как это:

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

Еще .. ничего не изменилось ... Я также пытался varionts с print_r и var_export ... ничего.

Я также сделал попробовать фиксированный агент пользователя для Curl, а также случайных агентов пользователей .. ничего ...

Единственный раз, когда он работает (время от времени, не всегда), если я простой var_dump ($ prdhtml); строки в результате на странице, и я не понимаю, как это отличается от ob_start.

Я не понимаю, в чем проблема и как это исправить ...

EDIT:

образец кода и скрипку: http://codepad.viper-7.com/aePjg7

+0

Буферизация вывода не имеет никакого отношения к ' curl'. Вы, похоже, неправильно используете выходную буферизацию. – Halcyon

+0

Итак, где ваш полный фрагмент кода? какую переменную и где вы пытаетесь использовать? в вашем вопросе я вижу только «var_dump ($ prdhtml);», но перед инициализацией '$ prdhtml' нет. так о чем вы говорите? – Alex

+0

добавлен полный код. –

ответ

0
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); // 
+0

У вас есть ошибка здесь: return curl_error ($ linkurl); .. это linkcurl. Пробовал это .. такие же результаты. Ничего не изменилось . и нет, я не получаю завиток. –

+0

уже исправлено :-) – Alex

+0

смотрите, этот код отлично работает для меня, но вы сказали, что он не работает для вас. единственная разница, которую я вижу, - это $ product_page_url = "http://www.v-tac.ro/lampi-led-de-gradina/corp-iluminat-led-ingropat-gu10-230v-detalii"; имеют право перед последней строкой '$ prdhtml = linkcurl ($ product_page_url);'. Вы уверены, что используете тот же URL? – Alex

Смежные вопросы