我正在创建一个系统,该系统涉及许多用户在短时间内预订门票,总共只能进行一定数量的预订。假设有 600 张门票可用,可能全部在 3 小时或更短的时间内预订。
理想情况下,我想确保未达到预订限制,因此在创建预订之前,我会检查是否可以根据可用门票数量进行预订。至关重要的是,我需要确保在检查和将票证分配给用户之间没有发生更新,以确保不会超过票证限制。
我正在尝试使用 mysql 表写入锁来实现这一点,但是在 codeigniter 框架中实现这一点时遇到了问题。在处理这个问题的模型中,我创建了几个函数,一个用于创建预订,另一个用于计算不同类型门票的数量。问题是他们似乎没有共享相同的数据库会话,因为他们的票务计数功能正在锁定。
执行顺序是
- 在控制器中运行 $this->model_name->create_reservation
- 在 model_name->create_reservation 中运行锁定查询
- 在 model_name->create_reservation 中调用计数方法
- 计数函数(这是model_name类中的一个方法)锁定,大概是因为使用不同的数据库会话?
数据库库通过 $this->load->database() 加载到模型的 __construct 方法中;
有任何想法吗?