Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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和大量简单查询_Php_Mysqli_Persistent - Fatal编程技术网

PHP、MySQL和大量简单查询

PHP、MySQL和大量简单查询,php,mysqli,persistent,Php,Mysqli,Persistent,我正在实现一个应用程序,它将有许多客户机从我的Web服务器查询许多小数据包。现在我不确定是否使用到数据库的持久数据连接。数据库当前与Web服务器位于同一系统上,可以通过套接字进行连接,但在不久的将来可能会发生变化 据我所知,mysqli_pconnect在几次PHP发布之前就被删除了,因为它的性能不理想。与此同时,它似乎又回来了 根据我的场景,我想我不会再有机会每分钟处理数千个查询了,但要有持久连接负载和每个连接只保留很少资源的MySQL配置,对吗 谢谢你的意见 问题是只有这样 主机之间的许多

我正在实现一个应用程序,它将有许多客户机从我的Web服务器查询许多小数据包。现在我不确定是否使用到数据库的持久数据连接。数据库当前与Web服务器位于同一系统上,可以通过套接字进行连接,但在不久的将来可能会发生变化

据我所知,mysqli_pconnect在几次PHP发布之前就被删除了,因为它的性能不理想。与此同时,它似乎又回来了

根据我的场景,我想我不会再有机会每分钟处理数千个查询了,但要有持久连接负载和每个连接只保留很少资源的MySQL配置,对吗

谢谢你的意见

问题是只有这样 主机之间的许多连接处于活动状态 “Apache”和主机“MySQL”


持久连接通常会出现问题,因为您达到了最大连接数。此外,在您的情况下,由于您的数据库服务器位于同一主机上,因此它不会带来很大的好处。暂时保持正常连接。

测试时发生了什么

世界上有了nest will,就没有实际的方法可以传达人们在SO响应中提供明确答案所需的所有信息。然而,通常建立mysql连接的开销很小,特别是当它与数据库客户端(在本例中为Web服务器)位于同一系统上时。如果您使用文件系统而不是网络套接字,那么开销甚至更低

因此,我建议对所有数据库调用进行抽象,这样您就可以轻松地在连接类型之间切换,但要编写系统以使用按需连接,并确保您的代码在实际情况下尽快显式释放连接,然后查看其行为


C.

正如他们所说,您的里程可能会有所不同,但我从未有过从PHP使用持久连接的好经验,包括MySQL和Oracle(ODBC和OCI8)。每次我测试它时,系统都无法重用连接。在高负载情况下,当我有数百个空闲连接时,我最终达到了上限

因此,我的建议是,您实际尝试一下,看看您的设置是否正确地重用了连接。如果它不能像预期的那样工作,那么无论如何也不会有什么大损失:与其他DBMS相比,打开MySQL连接的成本并不特别高


另外,在适当的时候不要忘记重置所有相关设置(无论您更改了什么会话值,它都将等待您下次建立连接并碰巧重用该连接)。

注意,共享持久连接的所有客户端也共享在其上创建的临时表(临时表在连接完成之前不会被回收)。好的,谢谢!测试场景并不容易。我只是想做好准备,而不是立即遇到问题。