делается рядом файлик, на него вешается крон, можно через wget даже
$time = file_get_contents('timer.time');
if (time() + 60 < $time) { // можно 300 или 600 поставить, 600 и крон на 9 минут, если упало, то востановит
system('su -s /bin/bash -c "php -f /script.php" nobody');
}
лучше наверное просто timestamp в файл писать, чтоб не плодить файлы
зачем в базу писать, когда можно рядом в файлик писать, просто пустой файлик с таймстамп меткой в имени, сделать крон, на проверку этого файла, и запускать если нет процесса
сделать кэшер не сложно, достаточно просто сохранять файл и проверять его дату создания, но лучше сделать по уму, каждый элемент ленты заносить в кэш с уникальным ключом, и добавлять только новые, могу проимеров дать
Ну вы как минимум читаете два раза один и тот же файл, прочтите один раз, разверните в одну переменную, без разворота в другую. Смотря сколько там записей, чем больше, тем дольше будет выполнение