我有一个用 PHP 编写的 webapp,它当前在每个页面上创建一个数据库连接(使用 mysqli_connect)以从数据库中提取数据。
最近,我的网站速度变慢了(流量增加了一些),我想知道创建如此多的连接(任何页面上的每个用户一个连接)是否会导致速度变慢?
有什么解决办法吗?
是否可以为服务器创建一个可共享的连接?我知道这在 python 中是可能的,但我不知道如何在 PHP 中实现这样的模型。
注意:我的网站在 BlueHost 上...我不知道这是否也会有所作为。
我有一个用 PHP 编写的 webapp,它当前在每个页面上创建一个数据库连接(使用 mysqli_connect)以从数据库中提取数据。
最近,我的网站速度变慢了(流量增加了一些),我想知道创建如此多的连接(任何页面上的每个用户一个连接)是否会导致速度变慢?
有什么解决办法吗?
是否可以为服务器创建一个可共享的连接?我知道这在 python 中是可能的,但我不知道如何在 PHP 中实现这样的模型。
注意:我的网站在 BlueHost 上...我不知道这是否也会有所作为。
有两件事要做。
EXPLAIN
命令来识别丢失的索引等来优化这些慢查询。mysqli_connect
在将主机传递给以打开持久连接时,您可以在主机前添加“p:” 。
您可以从以下链接阅读有关持久连接的信息:
http://us2.php.net/manual/en/features.persistent-connections.php
http://php.net/manual/en/mysqli.persistconns.php
http://us2.php.net/manual/en/function.mysql-pconnect.php
但我强烈建议不要使用持久连接。
您将需要找出实际上是什么降低了您的网站速度。
ping 一个为您快速加载的网站。例如。google.com。
ping 您的网络服务器,如果 ping 差异很大,那么您应该要求 BlueHost 解决它。
检查您的 Web 服务器和数据库服务器之间是否有任何延迟。他们可能是:
如果上述一切都很好并且页面仍然加载缓慢。
在页面中的数据库工作完成后,您可以尝试显式调用 mysqli_close() 。这将立即释放您的连接,而不是等待页面完全执行。然后,您需要确定在数据库工作结束后导致页面变慢的原因。
您可以在慢速页面上使用 mictotime() 来查看是什么代码减慢了速度。你可以使用这个链接:Accurate way to measure execution times of php scripts