Вам доступен запуск периодических задач через встроенный планировщик. Вы можете привязаться к основным системным событиям или завести задачи, выполняемые в произвольное время.
Создание CRON-файла
Файлы для планировщика задач создаются в разделе "Модули" управления хаками. Файл должен начинаться с cron
и через дефис - название самой задачи. Например, cron-stats.php
.
В файле должна присутствовать главная функция. При создании файла из интерфейса, она добавится автоматически. Название функции должно иметь формат hack_name_cron_task
, где вместо name
будет название вашего хака, а вместо task
- название задачи. Например, hack_proxy_cron_stats
. Функция принимает на вход один параметр - объект $core
.
<?php function hack_proxy_cron_stats( $core ) { // Cron code here }
Добавление файла в планировщик
Встроенный планировщик AlterCPA поддерживает четыре типа событий:
cron-1min
- выполняется каждую минуту. Рекомендуется использовать для быстрых задач с критичном временем выполнения.cron-3min
- запускается раз в 3 минуты. Рекомендуется использовать для запуска длительных задач без критичного времени выполнения, например, скачивания обновлений.cron-10min
- запускается раз в 10 минут. Рекомендуется использовать для задач средней степени длительности, которые занимают минуты.cron-1day
- выполняется в полночь. Рекомендуется использовать для длительных задач, оптимизации базы, сбора статистики, очистки хранилищ и других задач длительностью в десятки минут.
Названия эти событий используются в качестве ключей в массиве инициализации. В качестве значения передаётся массив с кратким названием файлов планировщика, ответственных за это событие.
Например, добавим на ежесуточное исполнение файлы cron-stats.php
и cron-emails.php
, и на выполнение каждую минуту файлы cron-visits.php
. Массив инициализации будет выглядеть так:
return [ /* другие команды инициализации */ 'cron-1min' => [ 'visits' ], 'cron-1day' => [ 'stats', 'emails' ], ];
Произвольные промежутки времени
Вы можете запускать задачи через произвольные случайные промежутки времени. Это полезно для запуска задач проверки обновлений, сбора статистики и прочих событий, выполняемых раз в несколько часов. Такие функции рекомендуется добавлять в трёхминутный блок исполнения.
Добавляем в начало функции проверку на текущее время и перенос таймера на следующий запрос:
$timer = $core->config( 'hack-proxy-stats' ); if ( $timer > time() ) return true; $settimer = time() + rand( 1800, 3600 ); $core->reconf( 'hack-proxy-stats', $settimer );
В качестве названия поля конфигурации рекомендуется использовать название хака и функции с префиксом hack
. В качестве времени переноса рекомендуется использовать случайное значение в заданном диапазоне с разбросом в несколько минут. Например, rand( 1800, 3600 )
даст перенос исполнения на полчаса-час.
Свои события планировщика
Вы можете завести свои собственные события планировщика, отличающиеся от системных. Их невозможно будет автоматически устанавливать вместе с хаком, они всегда требуют ручной установки.
Создайте файл с названием своего события в папке tasks
вашей системы. Предположим, ваше событие называется crawl
. В таком случае, файл будет называться crawl.php
, а его содержимое будет таким:
<?php define ( 'PATH', realpath( dirname(__FILE__) . '/../' ). '/' ) ; require_once PATH . 'core/mods/cron.php'; crontab( 'crawl' );
Пропишите файл в планировщике сервера от имени пользователя wsvr
:
crontab -e -u wsvr
Укажите там сточку планировщика в таком формате:
*/15 * * * * php -f /var/www/network.domain/tasks/crawl.php > /dev/null 2>&1
Для инициализации функций этого планировщика, используйте ключ cron-crawl
.