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