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