65 lines
2.4 KiB
PHP
65 lines
2.4 KiB
PHP
<?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";
|
|
}
|
|
?>
|