Планировщик задач Сron (Command Run ON) - это инструмент для автоматического выполнения заданий на сервере, повторяющихся с заданной периодичностью. С его помощью Вы можете осуществлять гибкую настройку различных задач.
На всех тарифах виртуального хостинга есть cURL.
Примеры Curl Скриптов: https://www.plus2net.com/php_tutorial/curl-demo.php
Ниже описаны различные варианты проверки работы Curl
При открытии файла test-curl.php с простейшим тестовым скриптом через браузер http://сайт.ru/test-curl.php:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.binance.com/api/v3/time");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
В ответ получим: { "serverTime": 1639392389001 }, что аналогично содержимому страницы https://api.binance.com/api/v3/time
Значит CURL работает.
Скрипт тестирования CURL скачиваем из источника: https://gist.github.com/janus57/333b8575d9fc049f9b6771fd452eb7af
Открываем через браузер, указываем сайт, с которого нужно получить данные. Данный скрипт покажет ошибки, типа getaddrinfo thread failed to start, тогда, когда браузер может их не отображать
Если в ответ приходит "getaddrinfo() thread failed to start", то необходимо увеличить количество процессов для пользователя. Для этого обратитесь в Центр поддержки хостинга.
Панель управления - Планировщик cron. Инструкция по добавлению задания в планировщик -> тут
Задаем команду @hourly
- указав полный путь до бинарного исполняемого файла curl:
/usr/bin/curl --location --request GET 'https://api.binance.com/api/v3/time' > /var/www/userXXX/data/output.txt
- или через браузер:
wget -O /var/www/userXXX/data/output.txt 'https://api.binance.com/api/v3/time'; >/dev/null 2>&1
Как итог получаем вывод в файл output.txt:
{"serverTime":1726052174907}

Если в ответ приходит "getaddrinfo() thread failed to start", то это означает, что запущено много одновременных процессов.
Для решения достаточно увеличить время в задании CRON.
1) В меню "Менеджер файлов" панели управления в корневом каталоге аккаунта создаем файл cron_test. В него добавляем:
<?php
$fp = fopen("text.txt", "a");
fwrite($fp, "cron running"."\r\n");
fclose($fp);
?>
или
<?php
$time = date('H:i:s');
$file= fopen ("test.txt", "w");
fwrite ($file, $time);
fclose ($file);
?>
2) Кнопкой "Атрибуты" назначаем файлу права 777
3) В меню "Планировщик (cron)" создаем команду (подробная инструкция -> тут):
/usr/bin/php /var/www/userXXXX/data/cron_test (без пробелов на конце)

4) Запускаем команду по кнопке "Выполнить"
, проверяем результат. Такой скрипт раз в 2 минуты будет добавлять запись в файл test.txt
Если Вы создали задание в планировщике cron, но нет признаков его выполнения:
/usr/bin/wget -O /dev/null http://site.ru/cron.php
Значит нужно сделать вывод в файл.
1) В меню "Менеджер файлов" панели управления в корневом каталоге сайта создаем файл test c правами 777 (права выставляются кнопкой "Атрибуты")
2) Вместо символьного файла /dev/null/ в команде cron'а после опции -O* указываем созданный файл /var/www/userXXXXX/data/имя-сайта/test, ставим ближайшую минуту выполнения (например, на сервере сейчас 12ч27мин12сек, мы поставим ближайшую 28-ю минуту). Команда будет выглядеть так:
28 * * * * /usr/bin/wget -O /var/www/userXXXXX/data/имя-сайта/test http://site.ru/cron.php >/dev/null 2>&1
*подробнее о других опциях wget можно почитать тут: https://linux.die.net/man/1/wget
3) При внесении изменений в команду будет выполнен
RELOAD (crontabs/userXXXXX),
и ровно в 28 минут будет исполнена заданная в кроне команда. Результат ее выполнения отобразится в файле test.
Если требуется периодически освобождать какой-либо каталог от файлов, то можно создать задание на автоматическую очистку с заданной периодичностью. Порядок дейтсвий на примере mod-tmp (папка хранит сессии пользователей, открывших сайт) описан далее.
В php.ini включаем авто удаление сессий:
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
Перезапускаем apache
В "Менеджере файлов" панели управления создаем файл clean.sh (именно с таким расширением .sh). В нем прописываем код:
#!/bin/bash
cd /var/www/userXXXXX/data/mod-tmp/ ; ls | xargs rm -rf
, где /var/www/userXXXXX/data/ - абсолютный путь до папок и файлов Вашего аккаунта
2) По кнопке "Атрибуты" назначаем права файлу 777

3) Переходим в меню "Планировщик (cron)" панели управления и добавляем команду:
/var/www/userXXXXXX/data/clean.sh
4) Запускаем задание кнопкой "Выполнить"
Если команда отработала корректно, то отобразится белое окно без ошибок, заданная папка при этом будет очищена


В примере ниже указываем команду без указания версии php в интерпретаторе:
/usr/bin/php /var/www/user123/data/www/cishost.ru/test.php
Это означает, что будет применяться та версия, которая в репозиториях операционной системы является основной для установленной версии debian на сервере.
Для этого в поле "Период" установите необходимую периодичность выполнения задания:
каждый час - задание будет выполняться в 0 минут каждого часа
каждый день - задание будет выполняться ежедневно ровно в 00:00
раз в неделю - задание будет выполняться каждое воскресенье ровно в 00:00
раз в год - задание будет выполняться каждый год 1 января ровно в 00:00
при перезагрузке - задание будет выполняться после каждой перезагрузки операционной системы
другое - более гибкая настройка периодичности с дополнительным набором полей. Возможны три варианта настройки настройки периодичности минут, часов, дней месяца, дней недели, месяцев и лет
Пример: если необходимо, чтобы задание выполнялось 1 раз в минуту выбираем период "Другое" cо значением "все" для всех временных параметров. Так задание будет выполняться каждую минуту (месяц и т.д.).

В результате в списке заданий планировщика будут отображены все созданные нами команды
либо следующими значениями периода
CISHost - работаем с 2006 года!