0

我想为我的 PHP 网站提供某种“交易”。
简单地说,登录用户同时执行两个请求是不可取的。
起初,我测试了我的应用程序,没有任何大的变化,也只是 cookie + 代码不知道并发性。
我已经添加了一些 sleep(15)a.phpb.php

请求两个页面: a.php 然后 b.php 导致 30 秒的加载,这是由于 cookie 使用而导致的预期行为。Cookie 被锁定 a.php 15 秒,所以 b.php 等待它的 15 秒。

但是,请求a.php 两次只持续 15 秒。似乎这两个请求都以某种方式加入。
我添加了一些带有 autoincrement id 的 SQL 插入,并 echoed $db -> insert_id ,这是相同的。

我还回应了一些 GET 参数:请求 a.php?text=One并且 a.php?text=Two 也持续 30 秒,而请求 a.php?text=One 两次再次被视为一次。

1.是什么原因导致这样的处理?
2.由于这种行为,客户端无法执行两个请求是否可靠?
3.如果不是,我应该如何将用户一次限制为一个 a.php 实例?

编辑:
这是我的代码:

<?php
session_start();
if(isset($_SESSION["myUser"]) && is_object($_SESSION["myUser"]))
{
    $loggedInUser = $_SESSION["myUser"];
}

sleep(15);

$db = new mysqli('localhost', 'root', '', 'test');      // :)
if($db->connect_errno > 0)
{
    die('Unable to connect to database!');
}

$statement = $db->prepare("INSERT INTO curl (request) VALUES (?)");
//id is inserted by MySQL autoincrement

$request=1;

$statement->bind_param('i', $request);
$statement->execute();

$id = $db->insert_id;   

echo $id;
?>
4

0 回答 0