mobile_order_expired.php 1015 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. use app\common\model\MobileOrder;
  3. use think\Db;
  4. use think\Log;
  5. use Workerman\Lib\Timer;
  6. use Workerman\Worker as WO;
  7. class MobileOrderExpired extends Com{
  8. public static function run()
  9. {
  10. $work=self::newWorker();
  11. $work->onWorkerStart=function ($conn){
  12. Timer::add(3,function (){
  13. $orders= MobileOrder::expired()->field('id')->select();
  14. self::log(sprintf('%d条数据',count($orders)));
  15. foreach ($orders as $order){
  16. try {
  17. Db::startTrans();
  18. $order=MobileOrder::where('id',$order['id'])->lock(true)->find();
  19. $order->cancel();
  20. Db::commit();
  21. }catch (\Exception $e){
  22. Db::rollback();
  23. Log::error("关闭订单[$order->id]失败:{$e->getMessage()}");
  24. }
  25. }
  26. });
  27. };
  28. }
  29. }
  30. MobileOrderExpired::run();