Ежедневная смена бэкграунда — как реализовать?

Поставил приложению (роутинг и отрисовка страниц на сервере, средствами PHP) рандомный бэкграунд с url https://unsplash.com/random . Всё отлично, вот только бэкграунд меняется при каждой загрузке страницы. Хочу сделать так, чтоб картинка оставалась на весь день + сделать кнопку "другой фон" - для запроса новой картинки по вышеприведенному URL.
Вопрос - с помощью чего это лучше реализовать? JS или PHP (например, скрипт, который скачивает картинку оттуда и кладёт по адресу, указанному в CSS)? И может уже кто-то придумал нечто подобное, чтоб велосипед не изобретать?
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
Audiophile
@Audiophile Автор вопроса
Сделал в PHP движке экшн для проверки/обновления изображения, JS тягает его по HTTP после загрузки страницы (асинхронно), если PHP возвращает 0 (файл не нуждается в обновлении), JS ничего не делает, если возвращается 1 (файл обновлен), то JS тут же перезагружает бэкграунд. Для кнопки смены просто PHP скрипту отправляется параметр force.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Exomode
@Exomode
Архитектор ПО
cron/crontab
Запуск PHP скрипта по расписанию cron. Когда не вс...
Будет выполнять действие асинхронно по интервалу времени.
Как вы реализуете логику cron-задачи, уже полностью от вас зависит. Либо будет подменять картинку, либо весь стиль целиком, просто у вас должен быть конфиг, который будет переключаться cron'ом, по нему движок сайта определит, какой контент в данный момент времени отдать клиенту.
Ответ написан
Комментировать
@Cyclop
оттолкнитесь от подробностей задачи.
нужно перенести рандом туда где он будет происходить раз в сутки и там хранить полученную информацию.
если сделать это на стороне сервера (PHP), то фон будет единый для всех пользователей, а номер фона нужно хранить в базе или в файле.
если сделать на стороне клиента (JS) то фон будет у каждого свой, информацию хранить например в куках с истечением в сутки.
на мой взгляд js предпочтительнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы