public function Run() { $DB = \Scalr::getDb(); $dbevent = $DB->GetRow("SELECT * FROM events WHERE id=?", array($this->EventID)); if ($dbevent) { try { //TODO: Initialize Event classes $Event = unserialize($dbevent['event_object']); if ($Event) { Logger::getLogger(__CLASS__)->info(sprintf(_("Fire event %s for farm: %s"), $Event->GetName(), $Event->GetFarmID())); // Fire event Scalr::FireDeferredEvent($Event); } $DB->Execute("UPDATE events SET ishandled='1', event_object = '' WHERE id=?", array($dbevent['id'])); } catch (Exception $e) { Logger::getLogger(__CLASS__)->fatal(sprintf(_("Cannot fire deferred event: %s"), $e->getMessage())); } } return true; }
public function OnStartForking() { $db = \Scalr::getDb(); // Get pid of running daemon $pid = @file_get_contents(CACHEPATH . "/" . __CLASS__ . ".Daemon.pid"); $this->Logger->info("Current daemon process PID: {$pid}"); // Check is daemon already running or not if ($pid) { $Shell = new Scalr_System_Shell(); // Set terminal width putenv("COLUMNS=400"); // Execute command $ps = $Shell->queryRaw("ps ax -o pid,ppid,command | grep ' 1' | grep {$pid} | grep -v 'ps x' | grep DBQueueEvent"); $this->Logger->info("Shell->queryRaw(): {$ps}"); if ($ps) { // daemon already running $this->Logger->info("Daemon running. All ok!"); return true; } } $rows = $db->Execute("SELECT * FROM events WHERE ishandled = '0' ORDER BY id ASC"); while ($dbevent = $rows->FetchRow()) { try { //TODO: Initialize Event classes $Event = unserialize($dbevent['event_object']); if ($Event) { Logger::getLogger(__CLASS__)->info(sprintf(_("Fire event %s for farm: %s"), $Event->GetName(), $Event->GetFarmID())); // Fire event Scalr::FireDeferredEvent($Event); } //$db->Execute("UPDATE events SET ishandled='1', event_object = '' WHERE id=?", array($dbevent['id'])); $db->Execute("UPDATE events SET ishandled='1' WHERE id=?", array($dbevent['id'])); } catch (Exception $e) { Logger::getLogger(__CLASS__)->fatal(sprintf(_("Cannot fire deferred event: %s"), $e->getMessage())); } } }