2017-12-27 163 views
-1

我有一个我开发的PHP应用程序。我注意到,如果我在多个窗口中使用应用程序,使用相同的会话,并且如果一个窗口忙于执行重要的mySql任务,则在另一个窗口上,直到第一个窗口运行完查询后才会完成。我假设每个用户会话允许的查询数有限制,并且PHP中有一个设置允许单个会话使用多个窗口或查询,但我似乎无法找到它。你能不能指出我正确的方向?尝试谷歌搜索它,但无法找出正确的方式来短语搜索。PHP会话限制用户的mySQL查询吗?

谢谢!

+0

这是一个浏览器的事.. –

+0

创建登录用户的会话ID,将它保存在数据库中,然后在登录电子中和使用多窗口验证用户的会话。如果会话ID不匹配当前用户和窗口,PHP将标记用户。这是同一个用户在不同浏览器上多次登录的解决方案。 – dean

回答

1

你见过session_write_close()

基本上,当连接到PHP脚本时,PHP锁定会话(用于写入目的),并且对该会话的任何其他请求都排队(以防止在从不同的PHP脚本同时写入会话时发生任何意外错误)

并且会话被锁定直到执行PHP脚本,因此MySQL任务基本上会堵塞会话队列。

只要告诉PHP,在执行实际任务之前,您将不再写入会话。

<?php 

session_start(); 
$user = $_SESSION["user"]; 

// you did your thing, now leave the session 
session_write_close(); 

// some clogging task 
while ($i < 10) { 
    sleep(1); 
    $i++; 
}