Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

открытие файла через URL - как ускорить

7.6K
24 сентября 2009 года
intro
22 / / 12.04.2005
Доброго времени суток.

Необходимо удаленно открыть файл через URL-адрес (http://dalcombank.ru) для последующего парсинга "курсы валют"

Ипользую file_get_contents(), но из-за низкой скорости соединения переодически вылетает сообщение об истечении времени выполнения скрипта.

Как можно ускорить получение необходимого контента не изменяя времени ваыполнения скрипта в php.ini?

Спасибо
366
24 сентября 2009 года
int
668 / / 30.03.2005
Ращирить интернет-канал. Или обратиться на другой сайт, с быстрым каналом, чтобы там нужный файл скачался, распарсился, запаковался, и уже на Ваш сайт пришёл упакованным.
7.6K
24 сентября 2009 года
intro
22 / / 12.04.2005
Цитата: int
Ращирить интернет-канал. Или обратиться на другой сайт, с быстрым каналом, чтобы там нужный файл скачался, распарсился, запаковался, и уже на Ваш сайт пришёл упакованным.



Спасибо, но хотелось бы получить ответ в ключе PHP программирования.
Можно ли решить описанную проблему используя, возможно, какие либо другие функции?

33K
24 сентября 2009 года
DuMMeR
19 / / 30.01.2008
Если сервер ваш, то в настройках PHP можете увеличить время исполнения, а если хостинг, то как и сказал Int, нужно попробовать парсить сайт другого банка, который будет грузится быстрее.
7.6K
24 сентября 2009 года
intro
22 / / 12.04.2005
...и все же интересует ответ по теме
366
24 сентября 2009 года
int
668 / / 30.03.2005
Да какой может быть другой ответ?
У меня интернет 300 килобит, как мне скачать 4 Гб фильм за час чтобы время работы скрипта не истекло?
Можно пользоваться прокси-сервером, который жмёт трафик. Обращение к такому прокси легко сделать чрез curl. Разжать zip-файл тоже не сложно, дело за малым - найти такой прокси.
Ну или, опять же, юзать curl и послать серверу заголовок, что сжатие поддерживается.

Интересно, что это за канал, что 100 кб нельзя скачать за время работы скрипта?

http://cbr.ru/currency_base/daily.aspx?C_month=09&C_year=2009&date_req=24%2F09%2F2009
Тут всего порядка 20 кб.
6
24 сентября 2009 года
George
4.1K / / 05.01.2007
имхо дело не в скорости канала. не может он быть настолько медленным. наверное что то в скрипте намудрили
12
24 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: intro

Ипользую file_get_contents(), но из-за низкой скорости соединения переодически вылетает сообщение об истечении времени выполнения скрипта.


Плохое решение. Очееень плохое решение. file_get_contents() не учитывает статус ответа и чуть что ругается в error лог. Правильный пусть сокеты/curl с отработкой статусов ответов и исключительных ситуаций. Ибо мне не вериться, что размер загружаемой страницы может быть на столько большим, что не укладывается в time_limite, поэтому косяк явно в скрипте.

7.6K
25 сентября 2009 года
intro
22 / / 12.04.2005
Цитата: alekciy
...мне не вериться, что размер загружаемой страницы может быть на столько большим, что не укладывается в time_limite, поэтому косяк явно в скрипте.


В скрипте "косяка" точно нет, алгоритм такой:
[font="Courier"]1. $buff = file_get_contents(URL);
2. preg_match_all ($pattern,$buff,$matches);
3. print_r ($matches);
[/font]

Цитата: alekciy
...Очееень плохое решение...Правильный пусть сокеты/curl ...

- а это уже по теме!
Дело в том, что я использую приведенную выше последовательность для обращения к нескольким (4-м если быть точным) URL из одного скрипта - 2 первых из 4 запросов обрабатываются успешно, на 3-м "затык" - грузится долго, в итоге - ошибка.

Про curl не знал - может кто подкинет пару линков для ознакомления (для "чайников" подойдет).

Спасибо.

7.6K
25 сентября 2009 года
intro
22 / / 12.04.2005
curl - не подходит, у хостера не установлен пакет CURL.
по крайней мере
 
Код:
<?php
echo curl_version();
?>
выдает
Fatal error: Unknown function: curl_version();

Про вариант с сокетами можно поподробнее.
366
25 сентября 2009 года
int
668 / / 30.03.2005
$f=fsockopen(...)
fwrite($f,"GET / HTTP/1.1\r\nHost: site.ru\r\n\r\n") и понеслося
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог