Имеем вот такой код:
file_put_contents(PUBLICROOT . $wwwPath, $xml->asXML());
echo time() . PHP_EOL;
echo $wwwPath . ' : ' . filemtime(PUBLICROOT . $wwwPath) . PHP_EOL;
/*
* 1480529710
* /sitemaps/product-0.xml : 1480529710
* 1480529710
* /sitemaps/product-1.xml : 1480529710
* 1480529710
* /sitemaps/catalog-1.xml : 1480398832
*/
То есть получаем на файле catalog-1.xml метку старой модификации, а не той, которая только что произошла. А она произошла! Это видно через ОС и при следующем вызове (запуске другого скрипта) filemtime('catalog-1.xml'). Но вот почему-то сразу после модификации отдает неверную информацию. Пробовал переписать через fwrite, делал паузу между записью и чтением времени, картина никак не меняется.
Ошибка появляется не всегда, случайно наткнулся, именно на такой комбинации файлов. Может быть существуют другие.
Тестировал на разных ОС с разными версиями PHP результат одинаковый. Какие есть идеи почему так может происходить?