Немного предыстории. Создал сайт, потом нужно идти в настройки крона, прописывать постоянно 6 строк подключения файлов на крон, только для обновления инфы с базы, на наличие, каких материалов нет на сайте. И ещё один — на обновление данных, т. е. чтобы новость обновилась при выходе новой серии, обновлении качества или озвучки. Как бы не удобно добавлять на каждый сайт по 7 заданий на крон, когда их можно уменьшить, и не тратить лишнее драгоценное время на настройку крона на сайте.
Всё что нужно будет сделать — это добавить секретный ключ и домен в файле, там эти строки почти в самом вверху. В общем комментировать код не буду, кто знает — прочитает его, кто не знает — или разберется, или ему это не нужно.
<?php
/**
* Универсальный скрипт для последовательного запуска PHP-файлов.
* Режимы:
* - CRON: php cron.alloha.php --log=(yes/no)
* - Браузер: https://0byroot.run/cron.alloha.php?log=(debug/yes/no)
*
*
* Для Windows CRON используйте:
* php C:\OSPanel\domains\0byroot.run\cron.alloha.php --log=yes
* или
* "C:\OSPanel\modules\php\PHP_8.1\php.exe" "C:\OSPanel\domains\0byroot.run\cron.alloha.php" --log=yes
*/
/**
Автоматизация через Планировщик задач (аналог CRON)
Чтобы скрипт запускался автоматически:
Откройте Планировщик задач (Task Scheduler - taskschd.msc).
Создайте новую задачу:
Триггер: Например, «Ежедневно в 3:00».
Действие: «Запустить программу».
Программа: C:\OSPanel\modules\php\PHP_8.1\php.exe.
Аргументы: "C:\OSPanel\domains\0byroot.run\cron.alloha.php" --log=yes.
*/
/**
Помимо парсинга и обновления материалов на сайте, нужно так же на крон поставить задачу
http://0byroot.run/engine/ajax/controller.php?mod=alloha&secret_key=byrooooooot
с частотой выполнения на ваш выбор. На локалке я его через BAT запускаю без перерыва, пока не будет ответ "no kp_id", только после этого скрипт останавливается.
Вы же можете поставить его к примеру на каждую минуту, или каждые 5 минут, или 30+... это время, через какой промежуток времени будет добавлен новый материал на сайт, если он что-то появилось в базе видеохостинга.
*/
// --- Конфигурация --- //
// Абсолютный путь к папке проекта, ключ для крона и домен
define('PROJECT_ROOT', 'C:\OSPanel\domains\0byroot.run');
$s_key = 'byrooooooot'; // "Секретный ключ для крона" из настроек модуля DLE Alloha
$domain_site = 'http://0byroot.run'; //Сюда пишем домен вместе с http:// или https:// без слеша на конце
// --- Ниже код не трогать, если не знаете для чего он --- //
// Куда писать логи
$logDir = PROJECT_ROOT . '\logs';
$logFile = $logDir . '\cron_master.log';
$maxLogSize = 5 * 1024 * 1024; // 5 MB (ротация)
// Список скриптов для выполнения
$scripts = [
// --- /Обновляем инфу по новым материалам в базе Alloha --- //
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=film&secret_key='.$s_key.'',
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=serial&secret_key='.$s_key.'',
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=anime&secret_key='.$s_key.'',
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=animeserial&secret_key='.$s_key.'',
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=tvshow&secret_key='.$s_key.'',
$domain_site.'/engine/ajax/controller.php?mod=alloha&type=trailer&secret_key='.$s_key.'',
// --- /Обновляем на сайте уже добавленные материалы (новая серия/качество/озвучка) --- //
$domain_site.'/engine/ajax/controller.php?mod=alloha&last&secret_key='.$s_key.'',
];
// --- /Конфигурация --- //
// Определяем режим запуска (CLI или HTTP)
$isCli = (php_sapi_name() === 'cli');
// Парсим параметры логирования
if ($isCli) {
$options = getopt('', ['log::']);
$logMode = strtolower($options['log'] ?? 'yes');
} else {
$logMode = strtolower($_GET['log'] ?? 'yes');
set_time_limit(0); // Отключаем таймаут для браузера
ignore_user_abort(true); // Работаем даже при закрытии страницы
}
// Создаем папку для логов, если её нет
if (($logMode === 'yes' || $logMode === 'debug') && !file_exists($logDir)) {
mkdir($logDir, 0777, true);
}
// Ротация логов (если файл слишком большой)
if (($logMode === 'yes' || $logMode === 'debug') && file_exists($logFile) && filesize($logFile) > $maxLogSize) {
rename($logFile, $logDir . '\cron_master_' . date('Y-m-d_H-i-s') . '.log');
}
// Функция логирования
function logMessage($message, $logFile, $logMode, $isCli) {
$timestamp = date('Y-m-d H:i:s');
$logLine = "[$timestamp] $message\n";
// Запись в файл
if ($logMode === 'yes' || $logMode === 'debug') {
file_put_contents($logFile, $logLine, FILE_APPEND);
}
// Вывод в консоль или браузер
if ($logMode === 'debug' || $logMode === 'no' || $isCli) {
echo $logLine;
if (!$isCli) ob_flush(); // Для браузера (вывод в реальном времени)
}
}
// --- Запуск --- //
logMessage("=== Старт выполнения (режим: {$logMode}) ===", $logFile, $logMode, $isCli);
foreach ($scripts as $target) {
$startTime = microtime(true);
logMessage("Запуск: {$target}", $logFile, $logMode, $isCli);
try {
if (filter_var($target, FILTER_VALIDATE_URL)) {
// HTTP-запрос для URL
$ch = curl_init($target);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new Exception("HTTP-код {$httpCode}");
}
$output = $response;
} else {
// Локальный скрипт
if (!file_exists($target)) {
throw new Exception("Файл не найден");
}
$output = shell_exec("php {$target} 2>&1");
}
$timeTaken = round(microtime(true) - $startTime, 2);
logMessage("Успешно: {$target} (Время: {$timeTaken} сек)", $logFile, $logMode, $isCli);
} catch (Exception $e) {
logMessage("ОШИБКА: {$target} - " . $e->getMessage(), $logFile, $logMode, $isCli);
}
}
logMessage("=== Завершение выполнения ===", $logFile, $logMode, $isCli);
Файл можете назвать как я — cron.alloha.php и закинуть в корень сайта, и поставить его на крон. Или, можете его назвать hjkldskgfjyudgjhfa5344.php (чтоб никто не подобрал его) и так же поставить на крон. В файле сначала обновляются добавленные материалы по 6-ти категориям: фильмы, аниме, сериалы, аниме сериалы, тв шоу и трейлеры, и потом идёт файл, который непосредственно обновляет уже существующие на сайте новости.
Все примеры как подключать файл на крон — прописано в комментариях кода.
Ну и на последок… Данный файл можно использовать не только с аллохой. Если у вас например 10 сайтов, и на всех есть крон задания, их все можно объединить в один, и они поочередно будут выполняться данным скриптом, без заморочек прописывая много-много крон заданий на сервере. Всем удачи. Надеюсь кому-то этот пост был полезен🤪🤪🤪
Скачать код выше в файле можно ниже. Так же там представлен ещё один файл cron.alloha.key.php, в который можно добавить ещё один проверочный ключ на запуск скрипта, но нужен ли он вам или нет - решать вам! Думаю первого варианта вполне достаточно, тем более если файлу дать уникальное название, которое никто не сможет подобрать.