mobile_order_expired.php 875 B

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