public getInactiveCronjobs ( $requiredCronjobs ) : array | ||
return | array | A string of cronjob names which aren't running |
public function getInactiveCronjobs($requiredCronjobs)
{
$dql = "SELECT c.cronjob FROM PartKeepr\\CronLoggerBundle\\Entity\\CronLogger c WHERE c.cronjob = :cronjob";
$dql .= ' AND c.lastRunDate > :date';
$query = $this->entityManager->createQuery($dql);
$date = new \DateTime();
$date->sub(new \DateInterval('P1D'));
$query->setParameter('date', $date);
$failedCronjobs = [];
foreach ($requiredCronjobs as $cronjob) {
$query->setParameter('cronjob', $cronjob);
try {
$query->getSingleResult();
} catch (\Exception $e) {
$failedCronjobs[] = $cronjob;
}
}
return $failedCronjobs;
}
/** * Returns the database schema status. * * This method is usuall called once the user logs in, and alerts him if the schema is not up-to-date. * * Returns either status incomplete if the schema is not up-to-date, or complete if everything is OK. */ public function getSystemStatus() { if ($this->container->getParameter("partkeepr.cronjob_check")) { $inactiveCronjobs = $this->cronLoggerService->getInactiveCronjobs($this->container->getParameter("partkeepr.required_cronjobs")); } else { // Skip cronjob tests $inactiveCronjobs = array(); } return array("inactiveCronjobCount" => count($inactiveCronjobs), "inactiveCronjobs" => $inactiveCronjobs, "schemaStatus" => $this->getSchemaStatus()); }