Скрипты автоматизации

Описание существующих скриптов

В составе web-TLO содержатся скрипты для автоматического выполнения определённых действий, они расположены в каталоге webtlo.local/cron/.

На данный момент существует шесть скриптов: update.php, keepers.php, control.php, reports.php, seeders.php и vacancies.php.

Скрипт update.php предназначен для обновления сведений о всех раздачах и регулярного пополнения локальной базы данных актуальными данными о числе сидов в сканируемых подразделах. Он записывает полученную информацию от трекера и клиентов в локальную базу данных. Запрашиваемые с трекера данные о раздачах кэшируются на стороне API и обновляются раз в час. Данный скрипт рекомендуется запускать раз в час в интервале от 11 до 59 минуты каждого часа. При запуске реже, чем раз в час, не будет выполняться расчет средних сидов в локальной базе.

Скрипт keepers.php собирает данные о раздачах, которые скачивают и/или хранят другие хранители в рамках сканируемых подразделов. Он выполняет скачивание страниц со списками хранимого материала (отчёты) и пытается найти в этих списках раздачи, закреплённые за другими хранителями. Затем выполняется сохранение этой информации в локальную базу данных. Запуск этого скрипта позволяет вам отследить и, самое важное, предупредить пересечение хранимого вами материала с тем, что уже хранят другие. Скрипт не имеет смысла запускать чаще, чем раз в сутки.

ПРИМЕЧАНИЕ. Кнопка «Обновить сведения» на главной странице web-TLO использует функционал двух скриптов — update.php и keepers.php.

Скрипт control.php может использоваться для регулировки раздач в торрент-клиентах в пределах сканируемых подразделов. В процессе выполнения скрипта осуществляется опрос доступных торрент-клиентов и получение от торрент-трекера информации о пирах. После этого производится формирование запросов торрент-клиентам для запуска и/или остановки раздач в них. Данный функционал может понадобиться, если у вас очень много раздач, но вам не хватает пропускной способности сетевого канала для одновременной раздачи всего имеющегося материала. Тогда можно настроить на запуск только те раздачи, где вы являетесь единственным сидом, а все остальные ставить на паузу. Подробнее см. управление раздачами. Чтобы запустить регулировку раздач вручную, воспользуйтесь кнопкой «Регулировка раздач» на главной странице.

Скрипт reports.php формирует отчёты о хранимых и скачиваемых вами раздачах в пределах сканируемых подразделов. Затем происходит отправка готовых отчётов в соответствующую ветку форума. Обратите внимание, что для корректной отправки отчётов необходимы актуальные данные, полученные с помощью скрипта update.php или кнопки «Обновить сведения». Поэтому сначала убедитесь, что вы успешно получили данные о раздачах с торрент-трекера и от торрент-клиентов, а только после этого выполняете отправку отчётов. Для отправки отчётов на форум в ручном режиме предусмотрена кнопка «Отправить отчёты» на главной странице.

ВНИМАНИЕ! Скрипты update.php, keepers.php и reports.php — являются обязательным минимумом для эффективной работы хранителя.

Скрипт seeders.php собирает данные о средних сидах для всего торрент-трекера. Рекомендуется запускать этот скрипт в отдельной копии web-TLO, чтобы исключить пересечение раздач со сканируемыми подразделами. Также важно понимать, что данный скрипт собирает информацию со всего торрент-трекера, поэтому в обычной работе хранителя он не нужен. Не рекомендуется запускать данный скрипт на слабых компьютерах!

Скрипт vacancies.php используется для автоматизированного формирования вакансий, основываясь на среднем значении сидов и отчётах хранителей для всех раздач торрент-трекера. Этот скрипт имеет смысл использовать только в паре с seeders.php. Для предварительной настройки обратитесь к странице расширенные параметры. Рядовому хранителю нет нужды включать этот скрипт в планировщик, не делайте этого никогда. Ни в коем случае не рекомендуется запускать данный скрипт на слабых компьютерах!

Для каждого из этих скриптов можно назначить запуск по расписанию. Ход выполнения скриптов располагается в каталоге webtlo.local/data/logs/, каждому скрипту свой файл журнала. Для запуска скриптов предполагается использовать встроенный планировщик заданий — cron. Пользователям Windows, в этом случае, можно воспользоваться средствами Open Server, который также позволяет выполнять запуск скриптов по расписанию.

ВНИМАНИЕ! Рекомендуется сначала заполнить все настройки через веб-интерфейс, нажать кнопку «Обновить сведения», убедиться, что всё работает корректно и только после этого добавлять скрипты в автозапуск по расписанию!

Запуск скриптов на Linux

ВНИНМАИЕ! В интервале 04:30-04:50 UTC+3 на форуме происходит ежедневная профилактика. Учитывайте часовые пояса cron и старайтесь не ставить скрипты на это время.

Сформируйте файл /etc/cron.d/webtlo с базовым набором скриптов:

cat > /etc/cron.d/webtlo <<EOF
15 * * * * root /usr/bin/php /var/www/webtlo.local/cron/update.php
55 5 * * * root /usr/bin/php /var/www/webtlo.local/cron/keepers.php
55 2 * * * root /usr/bin/php /var/www/webtlo.local/cron/reports.php
EOF

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

cat >> /etc/cron.d/webtlo <<EOF
*/30 * * * * root /usr/bin/php /var/www/webtlo.local/cron/control.php
EOF

где:

  • 15 * * * * — расписание запуска скрипта
  • root — пользователь, от имени которого запускать скрипт
  • /usr/bin/php — полный путь до исполняемого файла PHP
  • /var/www/webtlo.local/cron/update.php — полный путь до запускаемого файла со скриптом

ВНИМАНИЕ! Чтобы узнать полный путь до исполняемого файла PHP, введите в терминале: which php.

В предложенном выше варианте скрипт update.php будет выполняться каждый час в 15 минут, keepers.php — каждый день в 5 часов 55 минут, control.php — каждые 30 минут, reports.php — каждый день в 2 часа 55 минут.

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

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

Запуск скриптов на Windows

ВНИМАНИЕ! Чтобы скрипты выполнялись автоматически, необходимо обязательно в настройках Open Server на вкладке «Основные» включить опции «Запускать вместе с Windows» и «Автозапуск сервера» (см. Windows).

Откройте окно настроек Open Server и перейдите на вкладку «Планировщик заданий».

scripts1

Для выполнения скрипта необходимо задать ему расписание («Минута», «Час», «Число», «Месяц», «День недели») и указать полные и/или относительные пути до исполняемого файла PHP и самого скрипта через пробел в поле «Выполнить», нажать кнопку «Добавить». Аналогичную процедуру следует повторить для каждого скрипта. Чтобы изменить ранее добавленный скрипт, выполните кратковременное двойное нажатие по нему в списке.

scripts2

где:

  • 10 * * * * — расписание, по которому будет выполняться скрипт
  • C:\OpenServer\modules\php\PHP-7.4\php.exe — полный путь до исполняемого файла PHP (вместо 7.4 укажите используемую версию PHP)
  • C:\OpenServer\domains\webtlo.local\cron\update.php — полный путь до выполняемого скрипта

Рекомендуемое расписание для базового набора скриптов:

  • update.php — каждый час в 15 минут (15 * * * * )
  • keepers.php — каждый день в 5 часов 55 минут (55 5 * * * )
  • reports.php — каждый день в 2 часа 55 минут (55 2 * * * )

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

  • control.php — каждые 30 минут (*/30 * * * * )

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

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