открытие файла через URL - как ускорить
Необходимо удаленно открыть файл через URL-адрес (http://dalcombank.ru) для последующего парсинга "курсы валют"
Ипользую file_get_contents(), но из-за низкой скорости соединения переодически вылетает сообщение об истечении времени выполнения скрипта.
Как можно ускорить получение необходимого контента не изменяя времени ваыполнения скрипта в php.ini?
Спасибо
Спасибо, но хотелось бы получить ответ в ключе PHP программирования.
Можно ли решить описанную проблему используя, возможно, какие либо другие функции?
У меня интернет 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 кб.
Ипользую file_get_contents(), но из-за низкой скорости соединения переодически вылетает сообщение об истечении времени выполнения скрипта.
Плохое решение. Очееень плохое решение. file_get_contents() не учитывает статус ответа и чуть что ругается в error лог. Правильный пусть сокеты/curl с отработкой статусов ответов и исключительных ситуаций. Ибо мне не вериться, что размер загружаемой страницы может быть на столько большим, что не укладывается в time_limite, поэтому косяк явно в скрипте.
В скрипте "косяка" точно нет, алгоритм такой:
[font="Courier"]1. $buff = file_get_contents(URL);
2. preg_match_all ($pattern,$buff,$matches);
3. print_r ($matches);
[/font]
- а это уже по теме!
Дело в том, что я использую приведенную выше последовательность для обращения к нескольким (4-м если быть точным) URL из одного скрипта - 2 первых из 4 запросов обрабатываются успешно, на 3-м "затык" - грузится долго, в итоге - ошибка.
Про curl не знал - может кто подкинет пару линков для ознакомления (для "чайников" подойдет).
Спасибо.
по крайней мере
echo curl_version();
?>
Fatal error: Unknown function: curl_version();
Про вариант с сокетами можно поподробнее.
fwrite($f,"GET / HTTP/1.1\r\nHost: site.ru\r\n\r\n") и понеслося