/** * Fetch locomotive data from Memcached/Redis/Database * @since Version 3.9.1 * @param \Railpage\Locos\Locomotive $Loco * @return array */ public static function fetchLocomotive(Locomotive $Loco) { $AppCore = new AppCore(); $Memcached = AppCore::getMemcached(); $Database = $AppCore->getDatabaseConnection(); if (!($row = $Memcached->fetch($Loco->mckey))) { $timer = Debug::getTimer(); $query = "SELECT l.*, s.name AS loco_status, ow.operator_name AS owner_name, op.operator_name AS operator_name\n FROM loco_unit AS l\n LEFT JOIN loco_status AS s ON l.loco_status_id = s.id\n LEFT JOIN operators AS ow ON ow.operator_id = l.owner_id\n LEFT JOIN operators AS op ON op.operator_id = l.operator_id\n WHERE l.loco_id = ?"; $row = $Database->fetchRow($query, $Loco->id); Debug::logEvent("Zend_DB: Fetch loco ID", $timer); $Memcached->save($Loco->mckey, $row, strtotime("+1 year")); } return $row; }