示例#1
0
 protected function getsmsAction()
 {
     $lock = APPLICATION_PATH . '/../tmp/.build_sms';
     $this->lockFile($lock);
     $this->_recipientColumn = 'phone_number';
     $this->_dataModel = new WsPackageDataSms();
     $this->_packageModel = new WsPackageSms();
     $queueModel = new SmsQueue();
     $db = $this->_dataModel->getDefaultAdapter();
     try {
         $db->beginTransaction();
         $data = $this->_getData();
         if (!empty($data)) {
             foreach ($data as $package => $info) {
                 foreach ($info as $d) {
                     $insert[] = array('ws_package_id' => $package, 'phone_number' => $d['recipient'], 'message' => $d['message']);
                 }
             }
             $queueModel->addQueue($insert, $this->_packageSize);
             $db->commit();
         }
     } catch (Exception $e) {
         $this->_logger->log($e->getMessage() . " TRACE:" . $e->getTraceAsString(), Zend_Log::CRIT);
         $db->rollBack();
     }
 }
示例#2
0
 private function _send()
 {
     $model = new SmsQueue();
     $messages = $model->getToSend();
     $loadBalancer = new Logic_LoadBalancer();
     $data = array();
     while ($current = $messages->current()) {
         $data[$current->ws_package_id]['queue'] = $current;
         $data[$current->ws_package_id]['messages'][$current->phone_number] = $current->message;
         $messages->next();
     }
     foreach ($data as $d) {
         $package = $d['queue']->findParentRow('WsPackageSms');
         $serviceSet = $package->findParentRow('WsServiceSet');
         $serviceGroup = $serviceSet->findParentRow('WsServiceSmsGroup');
         $service = $loadBalancer->addServiceGroup($serviceGroup);
         $logic = new Logic_Sms($service->getService());
         $status = $logic->package(null, $d['messages']);
         if (isset($status->packageId) && !empty($status->packageId)) {
             $d['queue']->setFromArray(array('send' => true))->save();
             $packageModel = new SmsPackage();
             $packageModel->updatePackageId($status->packageId, $d['queue']->ws_package_id);
         }
     }
 }
示例#3
0
 public static function sendSms($jobId)
 {
     $model = SmsQueue::model()->findByPk($jobId);
     if ($model && $model->sent) {
         return false;
     } else {
         // Send SMS Here
     }
 }