Можно ли настроить ежечасное выполнение PHP-скрипта без Cron и без изменения настроек веб-сервера?
Взять внешний cron сервис и дёргать api по расписанию. Но дешевле и проще нормальную виртуалку арендовать
На удивление сработала простая идея - перезапускать скрипт через самого себя в рамках определенного промежутка времени, меньшего чем установлено ограничение на сервере. Например:
// test.php

<?php 

// max_execution_time на сервере равна 300 секунд (5 минут), 
// поэтому устанавливаем меньше - 240 секунд (4 минуты)
sleep(240);

// оставляем временнУю метку в файле или в БД
// проверяем - прошел ли час, затем обновляем её 

// перезапускаем сами себя
$url = 'https://site.ru/test.php';
$headers = []; // создаем заголовки
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$result = curl_exec($curl);

?>

Вот и весь скрипт. Однократно запустил в браузере (не ждал, а закрыл вкладку сразу же). Дальше он сам перезапускает себя раз в 4 минуты и каждый раз проверяет - не прошёл ли час. Тест на полтора часа показал, что работает :) Сообщу если потом вдруг что отвалится...

UPDATE: рано радовался. Проработал скрипт с перезапусками часа 2 и потом просто взял и перестал перезапускаться. Видимо какая-то неведомая шестерёнка в веб-сервере бдит и закрывает это дело...