Files
crm.clientright.ru/crm_extensions/file_storage/trigger_s3_migration.php

65 lines
2.4 KiB
PHP
Raw Normal View History

<?php
/**
* Trigger S3 Migration Hook
*
* Простой хук который можно вызывать после создания файлов
* Использование: include_once 'crm_extensions/file_storage/trigger_s3_migration.php';
*/
// Проверяем что мы в правильном контексте
if (!defined('ROOT_DIRECTORY') && !isset($dbconfig)) {
// Если вызывается не из CRM контекста, загружаем конфиг
$ROOT = dirname(__FILE__) . '/../../';
if (file_exists($ROOT . 'config.inc.php')) {
require_once $ROOT . 'config.inc.php';
}
}
/**
* Запускает автоматическую миграцию новых файлов в S3
* @param int $ageMinutes Возраст файлов в минутах (по умолчанию 2 минуты)
* @param int $limit Лимит файлов за раз (по умолчанию 10)
* @param bool $async Запускать в фоне (по умолчанию true)
*/
function triggerS3Migration($ageMinutes = 2, $limit = 10, $async = true) {
$rootDir = dirname(__FILE__) . '/../../';
$scriptPath = $rootDir . 'crm_extensions/file_storage/auto_migrate_to_s3.php';
if (!file_exists($scriptPath)) {
error_log("S3 Migration: Script not found at $scriptPath");
return false;
}
$cmd = "php $scriptPath --limit=$limit --age-minutes=$ageMinutes --dry-run=0 --force=0";
if ($async) {
// Запускаем в фоне
$cmd .= " > /dev/null 2>&1 &";
exec($cmd);
error_log("S3 Migration: Triggered background migration (age: {$ageMinutes}min, limit: $limit)");
} else {
// Синхронный запуск
$output = [];
$returnCode = 0;
exec($cmd, $output, $returnCode);
if ($returnCode === 0) {
error_log("S3 Migration: Completed successfully");
} else {
error_log("S3 Migration: Failed with code $returnCode");
}
return $returnCode === 0;
}
return true;
}
// Автоматический триггер если файл вызывается напрямую
if (basename(__FILE__) === basename($_SERVER['PHP_SELF'])) {
// Вызван напрямую - запускаем миграцию
triggerS3Migration();
echo "S3 migration triggered\n";
}
?>