pushHandler(new StreamHandler(PWD_LOGS . '/raspisms.log', Logger::DEBUG)); $name = "RaspiSMS Server"; $pid_dir = PWD_PID; $additional_signals = []; $uniq = true; //Main server should be uniq //Construct the server and add SIGUSR1 and SIGUSR2 parent::__construct($name, $logger, $pid_dir, $additional_signals, $uniq); //Start the daemon parent::start(); } public function run() { //Create the internal controllers $this->bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, 'UTF8'); $this->internal_user = new \controllers\internals\User($this->bdd); $this->internal_phone = new \controllers\internals\Phone($this->bdd); $this->internal_scheduled = new \controllers\internals\Scheduled($this->bdd); //Start all phones daemons $phones = $this->internal_phone->get_all(); foreach ($phones as $phone) { $phone_name = 'Phone ' . $phone['number']; $pid_file = PWD_PID . '/' . $phone_name . '.pid'; if (file_exists($pid_file)) { continue; } //Create a new daemon for the phone $phone = new \daemons\Phone($phone); } $queues = []; //Get all sms to send $smss = $this->internal_scheduled->get_smss_to_send(); foreach ($smss as $sms) { //If queue has been deleted or does not exist, create a new one $queue_id = (int) mb_substr($sms['origin'], 1); if (!msg_queue_exists($queue_id)) { $queues[$queue_id] = msg_get_queue($queue_id); } elseif (!isset($queues[$queue_id])) { $queues[$queue_id] = msg_get_queue($queue_id); } $queue = $queues[$queue_id]; $msg = [ 'text' => (string) $sms['text'], 'origin' => (string) $sms['origin'], 'destination' => (string) $sms['destination'], 'flash' => (bool) $sms['flash'], ]; msg_send($queue, SEND_MSG, $msg); } sleep(0.5); } public function on_start() { $this->logger->info("Starting " . $this->name . " with pid " . getmypid()); } public function on_stop() { $this->logger->info("Stopping " . $this->name . " with pid " . getmypid ()); } public function handle_other_signals($signal) { $this->logger->info("Signal not handled by " . $this->name . " Daemon : " . $signal); } }