mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 07:12:26 +02:00
#1165 backup with errors fills up tmp-directories with lots of backup-files (retrofit from trunk)
SVN:2.1.0[3892]
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
// Copyright (C) 2010-2012 Combodo SARL
|
// Copyright (C) 2010-2016 Combodo SARL
|
||||||
//
|
//
|
||||||
// This file is part of iTop.
|
// This file is part of iTop.
|
||||||
//
|
//
|
||||||
@@ -224,6 +224,13 @@ class DBBackup
|
|||||||
}
|
}
|
||||||
if ($iRetCode != 0)
|
if ($iRetCode != 0)
|
||||||
{
|
{
|
||||||
|
// Cleanup residual output (Happens with Error 2020: Got packet bigger than 'maxallowedpacket' bytes...)
|
||||||
|
if (file_exists($sBackupFileName))
|
||||||
|
{
|
||||||
|
unlink($sBackupFileName);
|
||||||
|
throw new Exception('Effacement du fichier '.$sTmpFileName);
|
||||||
|
}
|
||||||
|
|
||||||
$this->LogError("Failed to execute: $sCommandDisplay. The command returned:$iRetCode");
|
$this->LogError("Failed to execute: $sCommandDisplay. The command returned:$iRetCode");
|
||||||
foreach($aOutput as $sLine)
|
foreach($aOutput as $sLine)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
// Copyright (C) 2010-2013 Combodo SARL
|
// Copyright (C) 2010-2016 Combodo SARL
|
||||||
//
|
//
|
||||||
// This file is part of iTop.
|
// This file is part of iTop.
|
||||||
//
|
//
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
/**
|
/**
|
||||||
* Heart beat of the application (process asynchron tasks such as broadcasting email)
|
* Heart beat of the application (process asynchron tasks such as broadcasting email)
|
||||||
*
|
*
|
||||||
* @copyright Copyright (C) 2010-2013 Combodo SARL
|
* @copyright Copyright (C) 2010-2016 Combodo SARL
|
||||||
* @license http://opensource.org/licenses/AGPL-3.0
|
* @license http://opensource.org/licenses/AGPL-3.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -71,49 +71,49 @@ function UsageAndExit($oP)
|
|||||||
|
|
||||||
function RunTask($oProcess, BackgroundTask $oTask, $oStartDate, $iTimeLimit)
|
function RunTask($oProcess, BackgroundTask $oTask, $oStartDate, $iTimeLimit)
|
||||||
{
|
{
|
||||||
|
$oNow = new DateTime();
|
||||||
|
$fStart = microtime(true);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$oNow = new DateTime();
|
|
||||||
$fStart = microtime(true);
|
|
||||||
$sMessage = $oProcess->Process($iTimeLimit);
|
$sMessage = $oProcess->Process($iTimeLimit);
|
||||||
$fDuration = microtime(true) - $fStart;
|
|
||||||
if ($oTask->Get('total_exec_count') == 0)
|
|
||||||
{
|
|
||||||
// First execution
|
|
||||||
$oTask->Set('first_run_date', $oNow->format('Y-m-d H:i:s'));
|
|
||||||
}
|
|
||||||
$oTask->ComputeDurations($fDuration); // does increment the counter and compute statistics
|
|
||||||
$oTask->Set('latest_run_date', $oNow->format('Y-m-d H:i:s'));
|
|
||||||
|
|
||||||
$oRefClass = new ReflectionClass(get_class($oProcess));
|
|
||||||
if ($oRefClass->implementsInterface('iScheduledProcess'))
|
|
||||||
{
|
|
||||||
// Schedules process do repeat at specific moments
|
|
||||||
$oPlannedStart = $oProcess->GetNextOccurrence();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Background processes do repeat periodically
|
|
||||||
$oPlannedStart = new DateTime($oTask->Get('latest_run_date'));
|
|
||||||
// Let's assume that the task was started exactly when planned so that the schedule does no shift each time
|
|
||||||
// this allows to schedule a task everyday "around" 11:30PM for example
|
|
||||||
$oPlannedStart->modify('+'.$oProcess->GetPeriodicity().' seconds');
|
|
||||||
$oEnd = new DateTime();
|
|
||||||
if ($oPlannedStart->format('U') < $oEnd->format('U'))
|
|
||||||
{
|
|
||||||
// Huh, next planned start is already in the past, shift it of the periodicity !
|
|
||||||
$oPlannedStart = $oEnd->modify('+'.$oProcess->GetPeriodicity().' seconds');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$oTask->Set('next_run_date', $oPlannedStart->format('Y-m-d H:i:s'));
|
|
||||||
$oTask->DBUpdate();
|
|
||||||
}
|
}
|
||||||
catch(Exception $e)
|
catch(Exception $e)
|
||||||
{
|
{
|
||||||
$sMessage = 'Processing failed, the following exception occured: '.$e->getMessage();
|
$sMessage = 'Processing failed with message: '.$e->getMessage();
|
||||||
}
|
}
|
||||||
return $sMessage;
|
$fDuration = microtime(true) - $fStart;
|
||||||
|
if ($oTask->Get('total_exec_count') == 0)
|
||||||
|
{
|
||||||
|
// First execution
|
||||||
|
$oTask->Set('first_run_date', $oNow->format('Y-m-d H:i:s'));
|
||||||
|
}
|
||||||
|
$oTask->ComputeDurations($fDuration); // does increment the counter and compute statistics
|
||||||
|
$oTask->Set('latest_run_date', $oNow->format('Y-m-d H:i:s'));
|
||||||
|
|
||||||
|
$oRefClass = new ReflectionClass(get_class($oProcess));
|
||||||
|
if ($oRefClass->implementsInterface('iScheduledProcess'))
|
||||||
|
{
|
||||||
|
// Schedules process do repeat at specific moments
|
||||||
|
$oPlannedStart = $oProcess->GetNextOccurrence();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Background processes do repeat periodically
|
||||||
|
$oPlannedStart = new DateTime($oTask->Get('latest_run_date'));
|
||||||
|
// Let's assume that the task was started exactly when planned so that the schedule does no shift each time
|
||||||
|
// this allows to schedule a task everyday "around" 11:30PM for example
|
||||||
|
$oPlannedStart->modify('+'.$oProcess->GetPeriodicity().' seconds');
|
||||||
|
$oEnd = new DateTime();
|
||||||
|
if ($oPlannedStart->format('U') < $oEnd->format('U'))
|
||||||
|
{
|
||||||
|
// Huh, next planned start is already in the past, shift it of the periodicity !
|
||||||
|
$oPlannedStart = $oEnd->modify('+'.$oProcess->GetPeriodicity().' seconds');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$oTask->Set('next_run_date', $oPlannedStart->format('Y-m-d H:i:s'));
|
||||||
|
$oTask->DBUpdate();
|
||||||
|
return $sMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
function CronExec($oP, $aProcesses, $bVerbose)
|
function CronExec($oP, $aProcesses, $bVerbose)
|
||||||
|
|||||||
Reference in New Issue
Block a user