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); } } }
/** * Metoda zwraca właściwą usługę po testach LoadBalancera * @return Logic_Service */ public function getLoadBalancer($serviceType, $serviceGroupId) { $loadBalancer = new Logic_LoadBalancer(); $this->_serviceGroup = $this->_getServiceGroup($serviceType, $serviceGroupId)->current(); if (null === $this->_serviceGroup) { throw new Logic_Exception("No service group found!"); } $loadBalancer->addServiceGroup($this->_serviceGroup); return $loadBalancer; }