getTargets(); $this->outputInfo(sprintf("対象:%d件", $targets->count())); if ($targets->isEmpty()) { return self::RESULTCODE_SUCCESS; } else { } foreach ($targets as $order) { $this->handleOrder($order); } return self::RESULTCODE_SUCCESS; } public function getTargets() { return SMSSendOrder::whereDone(false) ->get(); } public function handleOrder(SMSSendOrder $order) { $db = DBUtil::instance(); try { $db->beginTransaction(); $ret = $this->manager->setOrder($order) ->poll(); if ($ret) { $order->save(); $this->outputInfo(sprintf( "ID:%s 電話番号:%s %s", $order->id, $order->phone_number, $order->done ? "完了" : "未" )); // イベント発行 if ($order->done) { ConfirmEvent::dispatch($order); } } else { $this->outputError(printf("失敗対象:%s", $order->toJson())); throw new AppCommonException("POLL 失敗"); } $db->commit(); } catch (Exception $e) { $db->rollBack(); throw $e; } } }