Beispiel #1
0
 public function send()
 {
     $nk = Nosql::NK_ASYNC_EMAIL_QUEUE;
     $beginTime = time();
     do {
         do {
             $rawMsg = Nosql::lPop($nk);
             if ($rawMsg === false || !isset($rawMsg[0])) {
                 break;
             }
             $data = json_decode($rawMsg, true);
             $ret = SendMail::sendmail($data['toList'], $data['title'], $data['desc']);
             if ($ret === false) {
                 if (isset($data['retry'])) {
                     continue;
                     // drop it
                 } else {
                     $data['retry'] = 1;
                     Nosql::lPush($nk, json_encode($data));
                 }
             }
         } while (true);
         if (time() - $beginTime > 30) {
             // 30秒脚本重新执行一次
             break;
         }
         usleep(200000);
     } while (true);
 }
Beispiel #2
0
 public function cancel()
 {
     $nk = Nosql::NK_ASYNC_CANCEL_ORDER_QUEUE;
     $beginTime = time();
     do {
         $now = time();
         do {
             $rawMsg = Nosql::lPop($nk);
             if ($rawMsg === false || !isset($rawMsg[0])) {
                 break;
             }
             $data = json_decode($rawMsg, true);
             if ($now - $data['ctime'] > (int) $data['duration']) {
                 $this->doCancel($data);
             } else {
                 Nosql::lPush($nk, $rawMsg);
             }
         } while (true);
         if ($now - $beginTime > 30) {
             // 30秒脚本重新执行一次
             break;
         }
         sleep(1);
     } while (true);
 }
Beispiel #3
0
 protected function run($idx)
 {
     $nk = Nosql::NK_ASYNC_SEND_WX_MSG_QUEUE;
     $beginTime = time();
     do {
         do {
             $rawMsg = Nosql::lPop($nk);
             if ($rawMsg === false || !isset($rawMsg[0])) {
                 break;
             }
             $data = json_decode($rawMsg, true);
             $ret = $this->processMsg($data);
             if ($ret === false) {
                 if (isset($data['retry'])) {
                     continue;
                     // drop it
                 } else {
                     $data['retry'] = 1;
                     Nosql::lPush($nk, json_encode($data));
                 }
             }
         } while (true);
         if (time() - $beginTime > 30) {
             // 30秒脚本重新执行一次
             break;
         }
         usleep(200000);
     } while (true);
 }
 public function remind()
 {
     $nk = Nosql::NK_ASYNC_ORDER_PAY_REMIND_QUEUE;
     $beginTime = time();
     do {
         $now = time();
         do {
             $rawMsg = Nosql::lPop($nk);
             if ($rawMsg === false || !isset($rawMsg[0])) {
                 break;
             }
             $data = json_decode($rawMsg, true);
             if ($now - $data['ctime'] > 600) {
                 $this->doRemind($data);
             } else {
                 Nosql::lPush($nk, $rawMsg);
             }
         } while (true);
         if ($now - $beginTime > 30) {
             // 30秒脚本重新执行一次
             break;
         }
         sleep(1);
     } while (true);
 }