Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слишком долго парсит чужую страницу 
:(
    Опции темы
WhiteSpirit
Дата 28.11.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Есть код:
Код

...
    function GetCurs($in_ind, $in_url, $in_regblock, $in_begin, $in_end)
    {
        $this->url=$in_url;
        $this->regblock=$in_regblock;
        $this->begin=$in_begin;
        $this->end=$in_end;
        $this->ind=$in_ind;
        $screen=file($this->url);
        $i=0;
        while($i<sizeof($screen) && strpos($screen[$i], $this->regblock)==false)
            {$i++;}
        $temp=explode($this->begin, $screen[$i+$this->ind]);
        $temp=implode("",$temp);
        $temp=explode($this->end, $temp);
        $this->kurs=$temp[0];
        return $this->kurs;
    }
...
$a=GetCurs(2, "http://www.rbc.ru", "USD ЦБ РФ", "<TD ALIGN=\"RIGHT\"><FONT SIZE=\"-2\">&nbsp;", "</FONT>");
echo $a;
...


При добавлении этой операции страница грузится довольно долго.
Не подскажите есть ли какие либо другие более быстрые способы?
--------------------
To beer or no to beer
PM MAIL   Вверх
Mal Hack
Дата 28.11.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Про preg_match не слышал? или strpos?
PM ICQ   Вверх
WhiteSpirit
Дата 28.11.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



слышал, и что это быстрее будет?
--------------------
To beer or no to beer
PM MAIL   Вверх
AntonioBanderaz
Дата 28.11.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 18



Вот для себя делал... Довольно быстро всё работает...

Код

class price {
  var $content;
  var $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; 
  var $out ='';
  var $compare = array('Австралийский доллар'=>036,
                      'Английский фунт стерлингов'=>826,
                      'Доллар США'=>840,
                      'Евро'=>978,
                      'Канадский доллар'=>124,
                      'СДР'=>960,
                      'Сингапурский доллар'=>702,
                      'Новая турецкая лира'=>949,
                      'Швейцарский франк'=>756);  
                  
  function price() {
     $tpl = 'services/price/index.tpl';
     $GLOBALS['lib']['TEMPLATE']->loadTemplatefile($tpl, true, true);
     $this->content = $this->get_content();
     preg_match_all($this->pattern, $this->content, $this->out, PREG_SET_ORDER); 
     foreach($this->out as $cur) { 
       if(in_array($cur[2],$this->compare)) {
           $GLOBALS['lib']['TEMPLATE']->setCurrentBlock("row_price");
                $GLOBALS['lib']['TEMPLATE']->setVariable('name',array_search($cur[2],$this->compare));
                $GLOBALS['lib']['TEMPLATE']->setVariable('price',str_replace(",",".",$cur[4]));
            $GLOBALS['lib']['TEMPLATE']->parseCurrentBlock("row_price");    
       }
     }
  }
  function get() {
    return $GLOBALS['lib']['TEMPLATE']->get();
  }
  function get_content() { 
    // Формируем сегодняшнюю дату 
    $date = date("d/m/Y"); 
    // Формируем ссылку 
    $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
    // Загружаем HTML-страницу 
    $fd = fopen($link, "r"); 
    $text=""; 
    if (!$fd) echo "Запрашиваемая страница не найдена"; 
    else { 
      // Чтение содержимого файла в переменную $text 
      while (!feof ($fd)) $text .= fgets($fd, 4096); 
    } 
    // Закрыть открытый файловый дескриптор 
    fclose ($fd); 
    return $text;
  }
}


Под свои нужды поправишь надеюсь сам...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.