Добро пожаловать в базу знаний

Планировщик (Cron)

Планировщик задач Сron (Command Run ON)  - это инструмент для автоматического выполнения заданий на сервере, повторяющихся с заданной периодичностью. С его помощью Вы можете осуществлять гибкую настройку различных задач.

Проверка работы cURL

На всех тарифах виртуального хостинга есть cURL. Примеры Curl Скриптов: https://www.plus2net.com/php_tutorial/curl-demo.php Ниже описаны различные варианты проверки работы Curl Вариант 1  (через…

На всех тарифах виртуального хостинга есть cURL.

Примеры Curl Скриптов: https://www.plus2net.com/php_tutorial/curl-demo.php

Ниже описаны различные варианты проверки работы Curl

Вариант 1  (через браузер)

При открытии файла 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 работает.

 

Вариант 2  (c помощью скрипта тестирования CURL с Github)

Скрипт тестирования CURL скачиваем из источника: https://gist.github.com/janus57/333b8575d9fc049f9b6771fd452eb7af 

Открываем через браузер, указываем сайт, с которого нужно получить данные. Данный скрипт покажет ошибки, типа getaddrinfo thread failed to start, тогда, когда браузер может их не отображать

cur_test.png

Если в ответ приходит "getaddrinfo() thread failed to start", то необходимо увеличить количество процессов для пользователя. Для этого обратитесь в Центр поддержки хостинга.

 

Вариант 3 (через cron)

Панель управления - Планировщик 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}

output.png
Если в ответ приходит "getaddrinfo() thread failed to start", то это означает, что запущено много одновременных процессов.

Для решения достаточно увеличить время в задании CRON.

Информация полезна?
0

Как проверить работу cron

Вариант1. Проверка с помощью тестового скрипта 1) В меню "Менеджер файлов" панели управления в корневом каталоге аккаунта создаем файл cron_test. В…
Вариант1. Проверка с помощью тестового скрипта


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 

сron-test2.png

 

3) В меню "Планировщик (cron)" создаем команду (подробная инструкция -> тут):
/usr/bin/php /var/www/userXXXX/data/cron_test (без пробелов на конце)

cron-test3.png

4) Запускаем команду по кнопке "Выполнить"  cron-test5.png, проверяем результат. Такой скрипт раз в 2 минуты будет добавлять запись в файл test.txt

cron-test6.png

Вариант2. Проверка результата выполния команды выводом в файл

Если Вы создали задание в планировщике 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.

cron-test1.png

 

 

 

Информация полезна?
0

Очистка папки mod-tmp с помощью cron

Если требуется периодически освобождать какой-либо каталог от файлов, то можно создать задание на автоматическую очистку с заданной периодичностью. Порядок дейтсвий…

Если требуется периодически освобождать какой-либо каталог от файлов, то можно создать задание на автоматическую очистку с заданной периодичностью. Порядок дейтсвий на примере mod-tmp (папка хранит сессии пользователей, открывших сайт) описан далее.

На VDS сервере

В 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/ - абсолютный путь до папок и файлов Вашего аккаунта

clean1.png


2) По кнопке "Атрибуты" назначаем права файлу 777

attributes.png
3) Переходим в меню "Планировщик (cron)" панели управления и добавляем команду:
/var/www/userXXXXXX/data/clean.sh

clean3.png

4) Запускаем задание кнопкой "Выполнить"

clean4.png


Если команда отработала корректно, то отобразится белое окно без ошибок, заданная папка при этом будет очищена

clean5.png

Информация полезна?
1

Создание нового задания в планировщике cron

Предположительно у нас уже есть скрипт, который мы будем запускать. Cкрипт находится в папке /www/имя-сайта.ru/test.php Заходим в панель управления ISPmanager, переходим…
  • Предположительно у нас уже есть скрипт, который мы будем запускать. Cкрипт находится в папке /www/имя-сайта.ru/test.php
  • Заходим в панель управления ISPmanager, переходим в раздел "Планировщик(cron)" и нажимаем на кнопку "Создать"
  • cron1.png
  • Перед нами появляется окно, куда мы вписываем команду для запуска скрипта
  • Форматы команды
    Вариант1
  • /usr/bin/php5.6 /var/www/userXXX/data/www/site.ru/cron.php
  • Обратите внимание на пробел между интерпретатором /usr/bin/php5.6 и абсолютным путем до скрипта /var/www/userXXX/data/
    * вместо 5.6 укажите версию php Вашего сайта (узнать можно в разделе www-домены панели управления)
  • php-v.png
  • В примере ниже указываем команду без указания версии php в интерпретаторе:
    /usr/bin/php /var/www/user123/data/www/cishost.ru/test.php
    Это означает, что будет применяться та версия, которая в репозиториях операционной системы является основной для установленной версии debian на сервере.

    Cron3.png


  • Вариант 2. Если команда выше не отрабатывается, то задаем альтернативную:
    /usr/bin/wget -O /dev/null http://site.ru/cron.php
    У wget нет жёсткого таймаута в отличие от php-интерпретатора, который может по параметру max_execution_time отключать работу скрипта.
 
Задаем расписание запуска скрипта

Для этого в поле "Период" установите необходимую периодичность выполнения задания:

Cron2.png

каждый час - задание будет выполняться в 0 минут каждого часа

каждый день - задание будет выполняться ежедневно ровно в 00:00

раз в неделю - задание будет выполняться каждое воскресенье ровно в 00:00

  • раз в месяц - задание будет выполняться первого числа каждого месяца ровно в 00:00

раз в год - задание будет выполняться каждый год 1 января ровно в 00:00

при перезагрузке - задание будет выполняться после каждой перезагрузки операционной системы

другое - более гибкая настройка периодичности с дополнительным набором полей. Возможны три варианта настройки настройки периодичности минут, часов, дней месяца, дней недели, месяцев и лет

Пример: если необходимо, чтобы задание выполнялось 1 раз в минуту выбираем период "Другое"  cо значением "все" для всех временных параметров. Так задание будет выполняться каждую минуту (месяц и т.д.).

  • cron3.png
  • При выборе значения "Каждые" - задание будет выполняться с указанной периодичностью. Например, если вы укажете "10", то задание будет запускаться каждые 10 минут.
  • При задании значения "Указанные" с заданием поля "Выбранные" -  вы можете указать свои параметры выполнения заданий. Например, */10, 25, 35 означает, что задание будет выполняться каждые 10 минут, а также в 25 и 35 минут.

 

В результате в списке заданий планировщика будут отображены все созданные нами команды

cron4.png

со следующим форматом времени
cron5.png

либо следующими значениями периода

cron7.png

 

 

Информация полезна?
0