Логика времени для извлечения нового содержимого XML - нужен совет - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь кэшировать содержимое XML-файла, поэтому требуется только один запрос в день к внешнему серверу.По сути, если локально созданному XML-файлу более одного дня, чтобы получить внешнее содержимое и заменить содержимое локального файла.

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

Может кто-нибудь помочь мне понять, что это делает, и почему это может работать не так, как ожидалось?

$original_xml = '#####';
$new_xml      = get_template_directory().'/inc/horoscopes.xml';
$ageInSeconds = 86400; // 1 day

if(!file_exists($new_xml) || filemtime($new_xml) < time() + $ageInSeconds) {
    $contents = file_get_contents($original_xml);
    file_put_contents($new_xml, $contents);
}

1 Ответ

0 голосов
/ 27 февраля 2019

Текущее время плюс один день, независимо от единицы измерения, наступит завтра, поэтому я ожидаю, что ваш файл всегда будет иметь время создания раньше этого.

Я не знаю деталей языка илифункции, которые вы используете, поэтому я предполагаю, что filemtime() и time() возвращают смещение времени в секундах.

Все, что вам нужно сделать, это вычесть день вместо того, чтобы добавить его, например,

if(!file_exists($new_xml) || filemtime($new_xml) < (time() - $ageInSeconds))

Я добавил скобки к (time() - $ageInSeconds) для ясности, но они, вероятно, не нужны.

...