[英]How Can I Prevent Multiple Execution of REST API in same time?
我如何才能防止同时执行多个REST API ...我有一个具有多个MySQL数据库操作的rest API ...当同时从多个设备调用API时,这将在我的MySQL操作中造成多个问题API [PHP文件] ...
我该如何解决? 有什么建议么 ? 考虑..我是一个初学者
我的REST API代码:
<?php
$receipt = $_POST["receipt"];
$maxselect = $_POST["maxselect"];
$user = $_POST["user"];
$pass = $_POST["pass"];
$trans = $_POST["trans"];
include("dbConnect.php");
$result=mysqli_query($conn,"SELECT emp_pass FROM emp WHERE emp_name ='$user'");
$affected = mysqli_affected_rows($conn);
if ($affected > 0) {
#USER DETAILS MATCH
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$password = $row['emp_pass'];
}
}
if(strcmp($pass, $password) !== 0) {
$response = false;
echo json_encode($response);#encoding RESPONSE into a JSON and returning.
mysqli_close($conn);
exit();
}
// $randomtime =rand(0,2000000);
// usleep($randomtime);
$check=mysqli_query($conn,"CALL saveReceipt('$maxselect','$receipt','$trans')");
$response = true;
echo json_encode($response);#encoding RESPONSE into a JSON and returning.
mysqli_close($conn);
exit();
?>
您可以创建锁定文件,并在关键部分的开头将其写入标志,并在关键部分的结尾将其擦除(或清空)。 但这是不寻常的模式)DB中的所有事务都遵循ACID原则。 他们都是孤立的
我同意雷纳特所说的那是一个奇怪的模式。 数据库事务是处理竞争状况的一种方式。 另外,我注意到您没有对输入进行清理,这需要进行SQL注入。 也考虑解决该问题,请使用此链接指导您: 如何防止PHP中的SQL注入?
无论如何,您的SQL事务应如下所示:
-- select to see if your receipt exists before proceeding
START TRANSACTION;
CALL saveReceipt('%s','%s','%s');
COMMIT;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.