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); }
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); }
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); }