Прежде всего вам нужно будет проанализировать дату, указанную в заголовках:
$header = "Expires: Mon, 22 Nov 2011 10:01:22 GMT";
preg_match(
"/Expires: [A-Za-z]+, ([0-9]{1,2}) ([A-Za-z]+) ([0-9]{4}) ([0-9:]+) ([A-Z]{3})/",
$header,
$matches
);
$months = array(
"Jan" => "01",
"Feb" => "02",
"Mar" => "03",
"Apr" => "04",
"May" => "05",
"Jun" => "06",
"Jul" => "07",
"Aug" => "08",
"Sep" => "09",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12"
);
$day = $matches[1];
$month = $months[$matches[2]];
$year = $matches[3];
$time = $matches[4];
$zone = $matches[5];
$date = new DateTime("$year-$month-$day $time", new DateTimeZone($zone));
, затем вы можете проверить это по фактическому времени и выполнить обновление, только если $ date из последнего обновлениядостиг
$now = new DateTime();
if($now > $date);
Вы должны сохранить $ date в файле или БД после того, как вы загрузили XML и проанализировали дату.В следующий раз, когда вы запустите сценарий, просто проверьте сохраненную дату с новым DateTime (), чтобы увидеть, нужно ли вам его обновлять, если нет, вы можете загрузить сохраненный XML из файла.Это хорошо, вы можете сохранить его в базе данных, но я бы не стал создавать БД только для сохранения одной XML-структуры.Если вы хотите сохранить историю старых XML, БД имеет смысл снова.