gpt4 book ai didi

php - 当有两个请求时,处理有限的类(class)名额

转载 作者:行者123 更新时间:2023-11-29 10:39:31 24 4
gpt4 key购买 nike

我正在为 friend 写一个页面,人们可以在其中预订类(class)。所有类(class)名额有限。

在 PHP 页面上,我将获取类(class)的空闲时段(从 mysql),检查是否有足够的空间用于预订,然后将数据推送到 mysql。

预订保存在 session 中,当用户填写信息并确认预订时,应执行此代码,验证所有这些并将其保存到数据库中。

同时有两个请求时会发生什么?如何保证空闲槽在将数据推送到 mysql 之前保持空闲?

我会这样检查

<?php
$canBook = true;

foreach ($_SESSION["booking"]->courseList as $booking) { //For all courses in the session
if ($booking->getCourse()->getFreeSlots() < $booking->slots) { //Check if there are enough slots
$canBook = false;
break; //Not enough free space. Cancel
}
}

if ($canBook) {
//Is the data still vaild? (Think about other requests)
$_SESSION["booking"]->save(); //Add booking to the database and reserve the slots
}
else
showError(); //Show the user an error
?>

这可能是个问题还是永远不会发生?或者有更好的方法来解决这个问题吗?

谢谢,

蒂姆

最佳答案

如果在验证可用插槽后立即执行 $canBook 的检查,那么对于常规网站来说应该足够了。

如果存在并发请求的可能性(预期的活跃用户数是多少?一门类(class)一秒钟会有多少个请求?),您可以在检查之前锁定您的记录。比方说,在数据库中添加一个标志,只有在没有标志的情况下才继续进行验证和记录更新。如果有一个标志,脚本将进入休眠状态一秒钟,然后再检查一次。主线程在保存类(class)后会移除flag,并通过这种方式将控制权转移给其他线程。

关于php - 当有两个请求时,处理有限的类(class)名额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45784534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com