当前位置:首页>python>用Python实现一个电影订票系统!

用Python实现一个电影订票系统!

  • 2026-01-16 05:38:16
用Python实现一个电影订票系统!

那天晚上快十一点,我在客厅沙发上瘫着刷手机,想订一张第二天早上第一场的电影票,结果某个App卡了半天一直转圈。人都困得不行了,订单还在“处理中”。我当时就想:要不自己用 Python 写个小电影订票小系统玩玩算了,起码逻辑和问题都在我掌控里,对吧。

就当是给自己练下基本功,你也可以跟着一起写一个,很简单的那种,命令行就能跑起来,不整花里胡哨的页面。

先想一想,电影订票到底要干嘛嘛,别一上来就敲代码。正常用户的操作流程,大概就是:

  • 看到有哪些电影、什么场次
  • 选一个场次
  • 选座位
  • 支付(咱这里就不连支付了,当作“模拟付款成功”)
  • 看看自己的订单

所以最小闭环其实就是:场次 + 座位 + 订单。你把这三块搞清楚,一个小系统就成型了。

我一般习惯用几个类把东西抽一下,不然全写在一个脚本里,变量到处飞,很快就乱了。

我们这次会有这么几个概念:

  • 场次:哪部电影、几点、单价多少、座位分布
  • 座位:第几排第几列,有没有卖掉
  • 订单:谁买的、买了哪个场次、买了什么座位

先从最核心的“场次 + 座位”开始写起。

那天在公司楼下抽烟的时候,我就在纸上随手画了个座位图,5 排 8 列那种迷你厅就够演示了。代码里就是一个二维数组就搞定了。

我们用 dataclasses 来省点事儿,定义好 Seat 和 Show 两个类:

from dataclasses import dataclass, field
from typing import List


@dataclass
classSeat:
"""一个座位"""
    row: int      # 第几排,从 0 开始存
    col: int      # 第几列,从 0 开始存
    is_booked: bool = False# 是否已售


@dataclass
classShow:
"""一场电影场次"""
    id: int
    movie_title: str
    time: str          # 简单用字符串,不搞 datetime 了
    price: float
    rows: int = 5# 座位行数
    cols: int = 8# 座位列数
    seats: List[List[Seat]] = field(init=False)

def__post_init__(self):
# 初始化座位二维数组
        self.seats = [
            [Seat(r, c) for c in range(self.cols)]
for r in range(self.rows)
        ]

defavailable_seat_count(self) -> int:
"""计算还剩多少空座"""
return sum(
1
for row in self.seats
for seat in row
ifnot seat.is_booked
        )

defshow_seat_map(self) -> None:
"""在命令行打印座位图,O=空位 X=已售"""
        print(f"\n场次 {self.id} - 《{self.movie_title}》 {self.time}")
        print("座位图:O=可选,X=已售")
# 打印列号(从 1 开始给用户看)
        header = "    " + " ".join(f"{c+1:2d}"for c in range(self.cols))
        print(header)
for r, row in enumerate(self.seats):
            line = f"第{r+1:2d}排 "
for seat in row:
                line += " X"if seat.is_booked else" O"
            print(line)
        print()

defbook_seat(self, user_row: int, user_col: int) -> Seat:
"""
        订座位,用户输入是从 1 开始的行列,
        内部存储是从 0 开始,所以要减 1
        """

        r = user_row - 1
        c = user_col - 1

ifnot (0 <= r < self.rows and0 <= c < self.cols):
raise ValueError("座位不存在,检查下排号和列号是不是超范围了")

        seat = self.seats[r][c]
if seat.is_booked:
raise ValueError("这个座位刚刚被别人抢先买了,换一个吧")
        seat.is_booked = True
return seat

这里几个点说一下,别光看过去就完了:

  • __post_init__ 是 dataclass 在初始化后自动调用的,我们在这里把 seats 二维数组建出来
  • 用户输入的行列我们让他从 1 开始(更符合人类直觉),内部都是从 0 开始存,记得减 1
  • show_seat_map 这个打印函数,很粗糙,但够用,看着也清楚

有了场次,还差一个东西:订单。

你总得知道“谁买了哪个场次的哪几个座位”,对不对。为了简单,我们不搞用户登录,就用一个随便输入的“昵称”当作用户标识。

订单结构大概就:订单号 + 用户名 + 场次 + 座位列表 + 总价。

from dataclasses import dataclass
from typing import List, Tuple


@dataclass
classOrder:
"""简单的订单结构"""
    order_id: int
    user_name: str
    show: Show
    seats: List[Seat]

    @property
deftotal_price(self) -> float:
return round(len(self.seats) * self.show.price, 2)

defsummary(self) -> str:
        seat_str = ", ".join(
f"{s.row + 1}{s.col + 1}座"for s in self.seats
        )
return (
f"订单号:{self.order_id}\n"
f"用户:{self.user_name}\n"
f"电影:{self.show.movie_title}\n"
f"场次时间:{self.show.time}\n"
f"座位:{seat_str}\n"
f"总价:{self.total_price} 元"
        )

这里我懒得搞单独的价格字段了,反正总价就是:数量 × 单价


上面这些都只是“模型”,真正跟用户打交道的是那个“主程序循环”。就是那种:

  1. 打印菜单
  2. 让你选 “查看场次 / 订票 / 查看订单 / 退出”
  3. 根据选择调用不同函数

我当时写的时候心里就一个念头:千万别把逻辑写得太复杂,不然你半夜调 bug 真的会骂自己

来,我们写一个 TicketSystem 把东西包起来:

classTicketSystem:
def__init__(self):
# 模拟几场电影
        self.shows = {
1: Show(1"星际穿越""2024-01-07 10:00"39.9),
2: Show(2"盗梦空间""2024-01-07 14:30"35.0),
3: Show(3"三体:黑暗森林""2024-01-07 20:00"49.9),
        }
        self.orders: List[Order] = []
        self._order_seq = 1# 自增订单号

defrun(self):
        print("欢迎来到命令行电影订票系统 🎬")
whileTrue:
            print("\n========== 主菜单 ==========")
            print("1. 查看所有场次")
            print("2. 订票(选场次 + 选座)")
            print("3. 查看我的订单")
            print("4. 退出系统")
            choice = input("请输入操作序号:").strip()

if choice == "1":
                self.list_shows()
elif choice == "2":
                self.handle_booking()
elif choice == "3":
                self.list_orders()
elif choice == "4":
                print("好的,祝你观影愉快~")
break
else:
                print("输入不太对,再来一次吧")

deflist_shows(self):
        print("\n当前可选场次:")
for show in self.shows.values():
            print(
f"场次ID: {show.id} | 《{show.movie_title}》 "
f"| 时间: {show.time} | 单价: {show.price} 元 "
f"| 剩余座位: {show.available_seat_count()}"
            )

defhandle_booking(self):
ifnot self.shows:
            print("现在还没有上架的电影场次。")
return

        self.list_shows()
try:
            show_id = int(input("\n请输入想要订票的场次ID:").strip())
except ValueError:
            print("场次ID必须是数字。")
return

if show_id notin self.shows:
            print("没有这个场次ID,检查一下是不是输错了。")
return

        show = self.shows[show_id]
        show.show_seat_map()

try:
            num = int(input("你想一次买几个座位?:").strip())
if num <= 0:
                print("买的数量得大于 0 吧。")
return
except ValueError:
            print("数量必须是数字。")
return

        seats: List[Seat] = []
for i in range(num):
            print(f"\n正在选择第 {i+1} 个座位:")
try:
                row = int(input("请输入排号(从1开始):").strip())
                col = int(input("请输入列号(从1开始):").strip())
                seat = show.book_seat(row, col)
                seats.append(seat)
                print(f"已选:第{row}{col}座")
except ValueError as e:
                print(f"选座失败:{e}")
# 简单处理:如果失败,这个座位就不算
# 也可以选择让用户重选,这里先不复杂化
continue

ifnot seats:
            print("一个座位都没选上,这次订票就算了。")
return

        user_name = input("\n请输入你的昵称(用于记录订单):").strip() or"匿名用户"

        order = Order(
            order_id=self._order_seq,
            user_name=user_name,
            show=show,
            seats=seats
        )
        self.orders.append(order)
        self._order_seq += 1

        print("\n订票成功!订单信息如下:")
        print("--------------------------------")
        print(order.summary())
        print("--------------------------------")

deflist_orders(self):
ifnot self.orders:
            print("\n你还没有任何订单。")
return

        print("\n你的全部订单:\n")
for order in self.orders:
            print(order.summary())
            print("--------------------------------")

最后在文件末尾加上一个入口:

if __name__ == "__main__":
    system = TicketSystem()
    system.run()

这么一整套下来,一个可以跑的“命令行电影订票系统”就算完工了。你在终端里 python movie_ticket.py 跑起来,实际体验一下流程,会比只看代码印象深很多。

这里顺手说几个这种小玩具项目里,比较容易踩的点,免得你自己写的时候又重新掉坑里:

一个是输入校验。比如行列号越界、场次 ID 不存在、数量不是数字,这些东西在自己测试的时候不一定会去故意输错,但一旦别人来用,就一定有人各种乱输。上面我都是用 try/except ValueError 做了一层兜底,虽然简陋,但基本不会直接把程序整崩了。

还有一个是状态更新要统一地方维护。我们现在是:

  • Show 负责改 Seat.is_booked
  • TicketSystem 负责把 Order 存起来

如果你哪天想加“退票”功能,只要记住两件事: 把订单里的座位 is_booked 改回 False,然后把订单从 self.orders 里删掉就完事。逻辑都在这两块,不会散得到处都是。

再往后要扩展,其实有很多方向: 比如你想加:

  • 支持不同影厅(可以在 Show 里多加一个 hall_name
  • 把数据保存到文件 / 数据库,下次重启还能看到之前的订单
  • 用 FastAPI 或 Flask 把这套逻辑包成 HTTP 接口,再随便搞个前端页面

这些都可以在现在这份代码的基础上慢慢加,你会发现:当最早的数据模型设计得还算清晰的时候,后面要长肉就舒服多了。

我写这种小系统,主要是有两个用处:

一个是练手,刷语法、刷类的设计、刷异常处理这些东西; 另一个就是,你之后面试的时候,如果有人问你“用面向对象设计一个订票系统”这种题,你脑子里是有画面的,不会愣在那里现编。

你可以先把上面的代码直接搞成一个 movie_ticket.py 跑一遍,能跑通之后,再根据自己想法魔改一版: 比如加个“同一行必须连坐”的限制、加个“学生票半价”的逻辑之类的。改着改着,这个就变成你自己的电影订票系统了。

行,我这边就先说到这,我去给自己真买张电影票了,不然写了半天系统结果一个电影都没看,太亏了。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥私藏精品🔥
虎哥作为一名老码农,整理了全网最全《Python高级资料合集》。总量高达650GB

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 20:51:29 HTTP/2.0 GET : https://f.mffb.com.cn/a/462936.html
  2. 运行时间 : 0.447771s [ 吞吐率:2.23req/s ] 内存消耗:4,499.15kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=653639aa1a32b2a3117e9ca93b9ba453
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001370s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001811s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004675s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002371s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001640s ]
  6. SELECT * FROM `set` [ RunTime:0.007676s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001902s ]
  8. SELECT * FROM `article` WHERE `id` = 462936 LIMIT 1 [ RunTime:0.013837s ]
  9. UPDATE `article` SET `lasttime` = 1770555090 WHERE `id` = 462936 [ RunTime:0.038257s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.015699s ]
  11. SELECT * FROM `article` WHERE `id` < 462936 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.022876s ]
  12. SELECT * FROM `article` WHERE `id` > 462936 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.018245s ]
  13. SELECT * FROM `article` WHERE `id` < 462936 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.044240s ]
  14. SELECT * FROM `article` WHERE `id` < 462936 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.041404s ]
  15. SELECT * FROM `article` WHERE `id` < 462936 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.083238s ]
0.449637s