Загружать файл с внешнего ресурса

SergZ

PHP-скрипт при запуске скачивает файл с другого сайта и обрабатывает его.
Но тот другой сайт медленный и вообще может упасть.
Как получать нужный файл и кэшировать его в папке со скриптом?
Нужно это делать примерно раз в 1-2 минуты, cron использовать нельзя.
Может, есть какие-то способы %)

SCIF32

написать функцию get_file
которая будет скачивать файл, если его нет,
а если есть, то будет проверять на сколько он устарел, скачивать если устарел
и отдавать закешированный, если нет.
но этот вариант тормозной
зы
непонятно ограничение про cron.
просто вызов скрипта в баше - тоже не катит?

SergZ

У меня отдает кэшированный в течение трех минут после скачивания.
Но дело в том, что файл очень часто меняется, и поэтому его надо постоянно обновлять.
Cron можно запускать не чаще раза в час — ограничение хостера (masterhost).
Про скрипт в баше не знаю, есть доступ по ssh, но вряд ли там можно что-то запускать свое.

slonishka

#!/bin/bash
wget "<file>" -o file
sleep 3m
такое можно запускать?

pitrik2

мдя
засада...
может аджакс?
ну тойсть клиент в коде страницы будет иногда получать body onload="ajax_send_refresh_file"

SCIF32

на крон можно повесить скрипт, который будет повторять то, что ему хочется каждые две секунды в течении часа

SergZ

#!/bin/bash
wget "<file>" -o file
sleep 3m
такое можно запускать?
А что тут происходит, wget на три минуты ставится на паузу?
Мне кажется, сервер будет срубать процесс секунд через 30 после запуска.
может аджакс?
ну тойсть клиент в коде страницы будет иногда получать body onload="ajax_send_refresh_file"
Я ни в аджаксе, ни в яваскрипте ничего не понимаю :(
на крон можно повесить скрипт, который будет повторять то, что ему хочется каждые две секунды в течении часа
На работу php-скриптов тоже ограничение, 30 секунд вроде.

SCIF32

 
А что тут происходит, wget на три минуты ставится на паузу?
Мне кажется, сервер будет срубать процесс секунд через 30 после запуска.

На работу php-скриптов тоже ограничение, 30 секунд вроде.

Ограничение стопудов ставится на исполнение php-скриптов на веб-сервере.
 
Есть ли у твоего провайдера ограничение на исполнение shell-скриптов (именно его написал bachan, и я тоже имел ввиду вызов shell-скрипты из cron-a, да и вообще не особо представляю, зачем из cron-a вызывать php без shella я не вкурсе - уточняй у него.
В принципе и с php можно извратиться так, чтобы каждый скрипт исполнялся 30 секунд, а потом бы вызывал себя же.

slonishka

слушай, а нафиг тебе хостинг с такими страшными ограничениями?
нафиг вообще ssh, если на запуск шелл-скриптов такая жесть вводится?
может возьмешь VPS себе?
я вот у FirstVDS за 300 р. в месяц имею собственную FreeBSD всеми возможными способами и радуюсь жизни.

Commandor

Я ни в аджаксе, ни в яваскрипте ничего не понимаю :(
тогда менее удобное для клиентов решение - иногда вместо аджакс запроса добавлять в страницу
<img src="/get_file.php" width="1px" height="1px"/>

единственное, что им долго будет показываться, что страница еще не загружена.

conv3rsje

Но дело в том, что файл очень часто меняется, и поэтому его надо постоянно обновлять.
Ботай как работают кеширующие прокси всякие (проверка тегов Last-Modified/ETag, таймауты и тд)
Фактически тебе это и надо сделать :)
Если на "медленном" хосте файл изменился (типа ETag новый, или Last-Modifed + Range выдал что-то) то тупить и качать его. Если нет - быстро отдавать локальный.
Тут можно всякие таймауты вставлять, например если хостенк не ответил в течении 1-3-5-10-... секунд - давать локальный. Или еще как изголяться (например, в фоне качать новый файл, а по запросу всегда старый давать)
ЗЫ Сорри за сумбур, по-другому не обучен :)

SergZ

Ребята, всем спасибо :)
Надо было сразу написать в поддержку, вот что мне ответили:
Технически через cron скрипты можно запускать с периодичностью раз в минуту.
Но в случае, если скрипт будет вызывать повышенную нагрузку на сервер
виртуального хостинга, мы будем вынуждены удалить задания cron и выслать Вам
соответствующее уведомление.
Скачивание файла на 2 КБ вряд ли создаст гигантскую нагрузку, так что можно быть спокойным =)

slonishka

дааа, из-за двух килобайт тут такое развели, даже ETag-и предложили,
хотя там с таким подходом одних HTTP-хедеров наверное больше наберется, ггг. %
Оставить комментарий
Имя или ник:
Комментарий: