是否有类似会话 ID 的东西可以防止同一会话同时具有多个请求/线程?它是如何工作的?
我的应用程序的一个控制器类的方法中有一个循环,该循环等待某些操作(检查数据库)。
我需要看代码,下面是方法里面的代码摘录:
// Times in hundredths of seconds.
$timestamp = number_format(microtime(TRUE), 2, '', '');
$closing_time = $timestamp + ($auditorium_lot_timeout * 100);
// Loop until time's up.
do
{
usleep(250000); // Sleep 250ms to unload the CPU.
if (Model_Event::count_new_bids())
{
// Etc, etc, etc...
// Change closing time to wait 10 seconds more.
}
} while (number_format(microtime(true), 2, '', '') < $closing_time);
// After time's up, continue with closing the bids definitely.
// Perform some more actions.
此摘录所属的方法是由 AJAX 请求的。它的目的是在拍卖中关闭出价,但在关闭前等待几秒钟,以便有机会进行最后一次出价。为此,它会循环预先配置的时间量(如 30 秒),并且在循环时,整个应用程序无法接收来自同一用户的任何其他请求。这是为什么?这很难阻止我,因为该用户是现场拍卖的运营商/拍卖师,并且必须在他触发此循环时向未在线参与(但在真实礼堂中呈现)的用户发送“投标”请求。
更新: JS 请求代码由CanJS 模型抽象。