soundie
@soundie
Преподаватель, программист, писатель

Можно ли настроить ежечасное выполнение PHP-скрипта без Cron и без изменения настроек веб-сервера?

Можно ли настроить регулярное выполнение PHP-скрипта (например, раз в час), не залезая в настройки веб-сервера (увеличение max_execution_time в PHP и подобные), а также в Cron?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Взять внешний cron сервис и дёргать api по расписанию. Но дешевле и проще нормальную виртуалку арендовать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
soundie
@soundie Автор вопроса
Преподаватель, программист, писатель
На удивление сработала простая идея - перезапускать скрипт через самого себя в рамках определенного промежутка времени, меньшего чем установлено ограничение на сервере. Например:
// 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 и потом просто взял и перестал перезапускаться. Видимо какая-то неведомая шестерёнка в веб-сервере бдит и закрывает это дело...
Ответ написан
@sasmoney
Взять дедик с виндой и оставить запущенной страницу, создать страницу с обновлением страницы через js.
300-500р в месяц
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы