Jak ma ci zadziałać, skoro uruchamiasz to raz, albo przejdzie przez wszystkie i-fy, albo też nie, ale efekt końcowy jest taki, że to się już nigdy samoczynnie nie uruchomi drugi raz?
Skoro nie chcesz użyć Crona, to myślę, że powinieneś mieć drugi skrypt, który będzie sobie cały czas działał (pętla while lub until) i wywoływał twój skrypt w danym dniu. Pytanie tylko, po co wynajdywać koło na nowo. Chyba że nie masz możliwości użycia Crona?
Kilka luźnych uwag - może Cię naprowadzą na dobre rozwiąznie:
po co jest druga linia kodu?
Według mnie jest ona zupełnie zbędna.
Wydaje mi się, że porównanie dat w wierszu ósmym jest niewłaściwe
Bo plik nie może mieć daty późniejszej (nowszej), niż bieżąca (może być ona co najwyżej sobie równa - w tym samym dniu stworzenia pliku). To taka drobna uwaga, nie mająca w sumie wpływu na warunek. Nie wiem, co chcesz wtedy robić (ale chyba nic, bo to oznacza, że masz aktualny plik XML z mapą strony)?
W przeciwnym razie, tj. gdy data pliku jest mniejsza (starsza) niż bieżąca, pownienenś wygenerować nowy plik XML, prawda? Ale nie poprzez
tylko (tak mi się wydaje - nie wiem, co się dzieje w pliku sitemapgenerator.php) pownieneś załączyć ten skrypt poprzez include (i nclude_once ) lub require ( require_once ), który dzięki temu się wykona i wygeneruje mapę w XML. Obawiam się, że poprzez file_get_contents nie uzyskasz akcji wywołania skryptu PHP, a jedynie odczytanie jego zawartości (akcja bez sensu) - nie sprawdzałem.
Analoginczne działanie powinieneś podejmować w wierszu z drugim file_get_contents (czyli w przypadku, jeśli pliku XML z mapą nie ma).