Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的mysql\u查询是否同时阻止查询?_Php_Mysql_Sql_Locking - Fatal编程技术网

php中的mysql\u查询是否同时阻止查询?

php中的mysql\u查询是否同时阻止查询?,php,mysql,sql,locking,Php,Mysql,Sql,Locking,我安装了SugarCRM 我的问题是,当我在sugarcrm中进行搜索时,搜索查询会阻止所有其他查询 Id User Host db Command Time State Info 49498 sugar xx.xx.xx.xx:59568 sugarcrm Query 5 Sorting result SELECT leads.id ,

我安装了SugarCRM

我的问题是,当我在sugarcrm中进行搜索时,搜索查询会阻止所有其他查询

Id      User         Host                   db              Command Time    State   Info
49498   sugar        xx.xx.xx.xx:59568      sugarcrm        Query   5       Sorting result  SELECT leads.id  ,leads_cstm.cedula_c,leads_cstm.numplanilla_c,leads_cstm.profession_c,leads_cstm.b
49502   sugar        xx.xx.xx.xx:59593      sugarcrm        Sleep   5               NULL
正如您所看到的,我猜想查询Id
49502
正在等待查询
49498
完成

第一个查询是一个持续执行很长时间的搜索查询 第二个查询是对索引页的查询

奇怪的是,如果我打开两个终端并使用与sugarcrm安装相同的用户连接到mysql,我可以同时执行这两个查询,但如果我在浏览器中搜索并打开一个新选项卡并尝试访问索引页,则第二个选项卡将一直运行,直到第一个选项卡完成执行或服务器超时

我已经使用php作为模块和cgi对此进行了测试

所以我想它应该是mysql_查询函数本身的东西


有什么想法吗?很难优化数据库(很多表,很多内容),但至少站点应该能够同时使用…

可能是因为您使用的是基于文件的会话。PHP将在使用会话文件时锁定它们,这实际上使特定会话的所有请求都变成串行的


解决此问题的唯一方法是,在任何会话更改代码完成后,使用
session\u write\u close()。PHP将在使用会话文件时锁定它们,这实际上使特定会话的所有请求都变成串行的


解决这个问题的唯一方法是在任何会话更改代码完成后,使用
session\u write\u close()。至于性能,我不确定mysql_查询下到底发生了什么,但客户机确实可以在表工作时锁定它。是时候读一些源代码了。您确定CRM软件没有在表上设置任何锁吗?无论如何,您不应该使用mysql\u查询,请使用mysqli\u查询。至于性能,我不确定mysql_查询下到底发生了什么,但客户机确实可以在表工作时锁定它。是时候读一些源代码了。你确定CRM软件没有把任何锁放在桌子上吗?谢谢。我从未证实过这一点,但我注意到长时间运行的php请求将阻止其他选项卡访问同一站点,而其他设备(甚至浏览器)可以毫无问题地连接。我一直认为这就是问题所在,只是从来没有花时间去研究它。@marc-b你是对的,我使用两种不同的浏览器进行了测试,queris同时运行,谢谢!运行基于db的会话能否避免多个选项卡的问题?取决于您如何实现会话处理程序。自己滚动意味着锁定取决于您。如果你做得不好,两个并行请求可能会相互影响对方的数据。谢谢。我从未证实过这一点,但我注意到长时间运行的php请求将阻止其他选项卡访问同一站点,而其他设备(甚至浏览器)可以毫无问题地连接。我一直认为这就是问题所在,只是从来没有花时间去研究它。@marc-b你是对的,我使用两种不同的浏览器进行了测试,queris同时运行,谢谢!运行基于db的会话能否避免多个选项卡的问题?取决于您如何实现会话处理程序。自己滚动意味着锁定取决于您。如果您做得不好,两个并行请求可能会相互攻击对方的数据。