/dev/null 2>&1 * * La fréquence réelle d’envoi par événement est celle choisie dans l’admin * (1 / 5 / 15 / 30 / 60 min) + date/heure de fin. */ ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', __DIR__ . '/log/php_log.txt'); @set_time_limit(300); $strLockPath = rtrim(sys_get_temp_dir(), '/\\') . DIRECTORY_SEPARATOR . 'ms1_chronotrack_auto_sync.lock'; $fpLock = @fopen($strLockPath, 'c'); if ($fpLock === false || !flock($fpLock, LOCK_EX | LOCK_NB)) { // Un passage précédent tourne encore — on saute ce tick. if (is_resource($fpLock)) { fclose($fpLock); } header('Content-Type: text/plain; charset=utf-8'); echo 'busy'; exit; } session_start(); require_once __DIR__ . '/php/inc_fonctions.php'; require_once __DIR__ . '/php/chronotrack_api/inc_bootstrap.php'; $arrResult = fxChronotrackApiSyncRunAutoCron(); $strLine = 'auto_chronotrack_sync [' . date('Y-m-d H:i:s') . '] ' . ($arrResult['message'] ?? 'done'); error_log($strLine); header('Content-Type: text/plain; charset=utf-8'); echo $strLine . "\n"; flock($fpLock, LOCK_UN); fclose($fpLock);