您可以使用jQuery.ajax()
并将选项设置async
为 false:
async默认值:true 默认情况下,所有请求都是异步发送的(即默认设置为 true)。如果您需要同步请求,请将此选项设置为 false。跨域请求和 dataType: "jsonp" 请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作
你可以像这样使用它:
$.ajax({
type: "POST",
url: "file.php",
async: false,
data: data,
success: function(return){
alert("Success: "+return);
}
});
如果要添加加载器,只需将其应用为:
startLoader();
$.ajax({
type: "POST",
url: "file.php",
async: false,
data: data,
success: function(return){
alert("Success: "+return);
}
});
endLoader();
但是,您的 PHP 想法根本不是一个好的想法。打开会话并为此类事情执行所有过程只是无用的,并且会减慢您的脚本速度。你应该问自己:我真的需要阻止这个吗?
如果答案是肯定的,那么请执行以下操作:processes
在您的数据库中创建一个名为的表。在该表中创建 2 个字段:一个将是进程标识符:process_id
;第二个是进程状态:process_status
。第一个是您将使用 sha1(IMAGE) 定义的整数。第二个将是一个整数:1
表示“忙”,0
表示“空闲”。
然后你可以做这样的事情:
SELECT process_status FROM vps_processes WHERE process_id = sha1(CURRENT_IMAGE);
并检查它是什么1
或0
. 如果是1
则阻止脚本;如果是,0
那么您查询:
UPDATE vps_processes SET process_status = 1 WHERE process_id = sha1(CURRENT_IMAGE);
然后运行您必须运行的内容并在脚本查询结束时运行:
UPDATE vps_processes SET process_status = 0 WHERE process_id = sha1(CURRENT_IMAGE);