Выбирать раз в день laravel 5.2

рассмотрим следующую ситуацию.

Я использую следующую общедоступную конечную точку для получения данных: https://public-crest.eveonline.com/market/prices/

Детали под type хранятся в базе данных, они извлекаются один раз в день в час ночи с помощью задачи laravel.

Отлично, что запчасти готовы. Теперь предположим, что пользователь хочет узнать больше о:

«Средний вспомогательный усилитель щита»

Они будут щелкать ссылку, которая делает вызов API к href и извлекает эти данные. Я бы сделал так: если данные существуют в базе данных, используйте их, иначе сделайте вызов и сохраните их в базе данных.

это тоже легко.

Трудная часть говорит: сделайте вызов, если в базе данных нет этих сведений ИЛИ прошел один день с момента запуска задачи. Теперь таблица, в которой хранится информация, имеет временные метки created_at и updated_at, поэтому я бы сказал:

Когда пользователь нажимает на ссылку, чтобы просмотреть более подробную информацию, проверьте, есть ли A) сведения об элементе в базе данных, хорошо, теперь проверьте B) если прошло 24 часа с момента последней выборки данных, сделайте это, сравнив обновленные до 24 часов назад.

Это правильный способ сделать это?


person TheWebs    schedule 07.01.2016    source источник
comment
да, почему бы и нет? В любом случае вы можете запустить запланированное задание, которое будет запрашивать API каждые 24 часа, чтобы вы могли сказать, что если элемент находится в БД, чем его свежий   -  person Amir Bar    schedule 07.01.2016


Ответы (1)


Данные с самостоятельным сроком действия обычно хранятся в кеше (например, в memcached). Я думаю, что для вас было бы более рационально сделать что-то вроде этого:

$content = Cache::remember('page' . $href, 1440, function() {
    return $this->fetchPage($href);
});

Где fetchPage() — это воображаемый метод, который извлекает страницу по адресу $href. Поэтому, если кто-то запрашивает тот же URL в течение 24 часов, будет использоваться кешированное значение. Не нужно заполнять вашу базу данных значениями, срок действия которых истекает так быстро, и заботиться об их очистке.

person Denis Mysenko    schedule 07.01.2016