Updated jobs try catch to handle PHP7 Throwable exceptions

This commit is contained in:
max-baranikov 2021-12-16 13:15:40 +03:00 committed by GitHub
parent 3150dfa282
commit d0ce7c8ec4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 18 deletions

View File

@ -159,6 +159,8 @@ class RetailcrmJobManager
}); });
foreach ($jobs as $job => $diff) { foreach ($jobs as $job => $diff) {
$exception = null;
try { try {
if (isset($lastRuns[$job]) && $lastRuns[$job] instanceof DateTimeImmutable) { if (isset($lastRuns[$job]) && $lastRuns[$job] instanceof DateTimeImmutable) {
$shouldRunAt = clone $lastRuns[$job]; $shouldRunAt = clone $lastRuns[$job];
@ -189,9 +191,25 @@ class RetailcrmJobManager
); );
$lastRuns[$job] = new \DateTimeImmutable('now'); $lastRuns[$job] = new \DateTimeImmutable('now');
if ($result) {
$lastRunsDetails[$job] = [
'success' => true,
'lastRun' => new \DateTimeImmutable('now'),
'error' => null,
];
self::clearCurrentJob($job);
}
break; break;
} }
} catch (\Exception $exception) { } catch (\Exception $e) {
$exception = $e;
} catch (\Throwable $e) {
$exception = $e;
}
if (null !== $exception) {
if ($exception instanceof RetailcrmJobManagerException if ($exception instanceof RetailcrmJobManagerException
&& $exception->getPrevious() instanceof \Exception && $exception->getPrevious() instanceof \Exception
) { ) {
@ -218,16 +236,6 @@ class RetailcrmJobManager
} }
} }
if (isset($result) && $result) {
$lastRunsDetails[$job] = [
'success' => true,
'lastRun' => new \DateTimeImmutable('now'),
'error' => null,
];
self::clearCurrentJob($job);
}
try { try {
static::setLastRuns($lastRuns); static::setLastRuns($lastRuns);
static::setLastRunDetails($lastRunsDetails); static::setLastRunDetails($lastRunsDetails);
@ -252,6 +260,7 @@ class RetailcrmJobManager
* @return bool * @return bool
* *
* @throws Exception * @throws Exception
* @throws Throwable
*/ */
public static function execManualJob($jobName) public static function execManualJob($jobName)
{ {
@ -299,7 +308,7 @@ class RetailcrmJobManager
{ {
$lastRuns = json_decode((string) Configuration::getGlobalValue(self::LAST_RUN_NAME), true); $lastRuns = json_decode((string) Configuration::getGlobalValue(self::LAST_RUN_NAME), true);
if (JSON_ERROR_NONE != json_last_error()) { if (JSON_ERROR_NONE != json_last_error() || !is_array($lastRuns)) {
$lastRuns = []; $lastRuns = [];
} else { } else {
foreach ($lastRuns as $job => $ran) { foreach ($lastRuns as $job => $ran) {
@ -363,22 +372,22 @@ class RetailcrmJobManager
/** /**
* Extracts jobs last runs from db * Extracts jobs last runs from db
* *
* @return array<string, array> * @param bool $withFormattedDate
* *
* @throws \Exception * @return array<string, array>
*/ */
public static function getLastRunDetails() public static function getLastRunDetails($withFormattedDate = false)
{ {
$lastRuns = json_decode((string) Configuration::getGlobalValue(self::LAST_RUN_DETAIL_NAME), true); $lastRuns = json_decode((string) Configuration::getGlobalValue(self::LAST_RUN_DETAIL_NAME), true);
if (JSON_ERROR_NONE != json_last_error()) { if (JSON_ERROR_NONE != json_last_error() || !is_array($lastRuns)) {
$lastRuns = []; $lastRuns = [];
} else { } else {
foreach ($lastRuns as $job => $details) { foreach ($lastRuns as $job => $details) {
$lastRan = DateTimeImmutable::createFromFormat(DATE_RFC3339, $details['lastRun']); $lastRan = DateTimeImmutable::createFromFormat(DATE_RFC3339, $details['lastRun']);
if ($lastRan instanceof DateTimeImmutable) { if ($lastRan instanceof DateTimeImmutable) {
$lastRuns[$job]['lastRun'] = $lastRan; $lastRuns[$job]['lastRun'] = $withFormattedDate ? $lastRan->format('Y-m-d H:i:s') : $lastRan;
} else { } else {
$lastRuns[$job]['lastRun'] = null; $lastRuns[$job]['lastRun'] = null;
} }

View File

@ -89,7 +89,7 @@ class RetailcrmSettingsTemplate extends RetailcrmAbstractTemplate
$params['exportCustomersCount'] = RetailcrmExport::getCustomersCount(false); $params['exportCustomersCount'] = RetailcrmExport::getCustomersCount(false);
$params['exportOrdersStepSize'] = RetailcrmExport::RETAILCRM_EXPORT_ORDERS_STEP_SIZE_WEB; $params['exportOrdersStepSize'] = RetailcrmExport::RETAILCRM_EXPORT_ORDERS_STEP_SIZE_WEB;
$params['exportCustomersStepSize'] = RetailcrmExport::RETAILCRM_EXPORT_CUSTOMERS_STEP_SIZE_WEB; $params['exportCustomersStepSize'] = RetailcrmExport::RETAILCRM_EXPORT_CUSTOMERS_STEP_SIZE_WEB;
$params['lastRunDetails'] = RetailcrmJobManager::getLastRunDetails(); $params['lastRunDetails'] = RetailcrmJobManager::getLastRunDetails(true);
$params['currentJob'] = Configuration::get(RetailcrmJobManager::CURRENT_TASK); $params['currentJob'] = Configuration::get(RetailcrmJobManager::CURRENT_TASK);
$params['currentJobCli'] = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI); $params['currentJobCli'] = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI);
$params['retailcrmLogsInfo'] = RetailcrmLogger::getLogFilesInfo(); $params['retailcrmLogsInfo'] = RetailcrmLogger::getLogFilesInfo();