2016-05-23 3 views
0

Я пытаюсь очистить данные со страницы, пытаясь использовать CURL в PHP.PHP Curl connect to page wait for redirect

Проблема в том, что сайт иногда находится под большой нагрузкой и дает мне сообщение «Только один момент ... ваш запрос обрабатывается ...» и обновляется мета каждые 5 секунд, пока сервер не будет доступен , это может быть несколько обновлений.

Я попытался добавить

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

это не помогает, так как он обновляется несколько раз.

есть ли способ заставить его подождать, пока не будет больше обновлений или подтвердите, что он как-то дошел до следующей страницы?

завиток сценарий curently

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    $data = curl_exec($ch); 
    curl_close($ch); 

любая помощь приветствуется. Если это невозможно сделать с завитом, вы бы предложили другой метод?

+0

Пожалуйста, разместите обновление мета. –

+0

Это может быть сделано только путем повторения запроса. Убедитесь, что служба, с которой вы подключаетесь, согласна с вашими повторными запросами. Вы вносите свой вклад в большую нагрузку после всех – sba

+0

да, они позволяют соскабливать. – md123

ответ

0

Вы можете попробовать что-то вроде:

<?php 
    $data= "" ; 
    $retries = 0; 
    while(preg_match('/<meta http-equiv="refresh"/im', $data) or $retries < 5){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     if(!preg_match('/<meta http-equiv="refresh"/im', $data)) 
     { 
      break; 
     } 
     $retries++; 
     sleep(2); 
    } 
?> 

выше будет пытаться разобрать html для 5 раз и ждать секунд между попытками, Util в html не содержит <meta http-equiv="refresh

+0

это просто повторяет запрос. добавляя к загрузке сервера. я хочу, чтобы он оставался на одном соединении. – md123

+0

Вы не можете этого сделать. –