У меня есть блок кода 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 при каждом запросе?
Вы можете проверить filemtime
на сгенерированный файл и генерировать его только при загрузке страницы, если он старше 24 часов.
Кроме того, вы можете использовать cron для выполнения скрипта PHP или вызова URL. Так что есть и это.
Других решений пока нет …