Как выполнить блок кода в PHP один раз в день в основном файле шаблона? Не хрон

У меня есть блок кода PHP, который генерирует мой файл sitemap.xml. Проблема в том, что он генерирует файл каждый раз при загрузке страницы сайта. Код находится в моем основном файле шаблона.

Как я могу сказать PHP выполнять только этот код, скажем, один раз в день, а не каждый раз, когда шаблон загружается?

Я не хочу использовать вкладку cron, потому что код должен быть в файле шаблона. Файл шаблона извлекается для нескольких доменов в одной учетной записи. Так что мне нужно поставить условие на блок кода, который говорит only run this code when a page is loaded but only during a certain time frame each day, like from 12 noon to 4pm or something like that,

Я знаю, что для этого и нужен cron, но нужно ли это делать на PHP.

ОБНОВИТЬ

Так что это то, что я придумал на основе Travesty3 ответ.

$time  = time();
$sitemap = $_SERVER['DOCUMENT_ROOT'].'/sitemap.xml';
if ($time - filemtime($sitemap) >= 1*24*60*60) { // 1 days

(generate sitemap code here)

}

Это отлично работает. Карта сайта теперь генерируется только один раз в день, только если у сайта есть как минимум 1 посетитель в день.

Но если на сайте много трафика, который изначально был моей главной задачей, я не буду проверять filemtime файла sitemap.xml приводят к тому же количеству накладных расходов на сервере, что и при создании файла sitemap при каждом запросе?

3

Решение

Вы можете проверить filemtime на сгенерированный файл и генерировать его только при загрузке страницы, если он старше 24 часов.

Кроме того, вы можете использовать cron для выполнения скрипта PHP или вызова URL. Так что есть и это.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector