在尝试将我们的网站迁移到 Azure 的过程中,我们发现 PHP 代码与 MSSQL 交互时出现问题。
在当前的专用主机(同时托管 PHP 和 DB)上,访问一个页面通常需要不到 2 秒的时间。我还通过 SSMS 运行了必要的查询,它们花费的时间不到 1 秒。查询返回的数据量非常小 - 10-20 条记录,总共不到 100kb。
对于托管在 Azure 上的网站(连接到 Azure SQL 数据库),加载同一页面大约需要 40 秒。进一步调查表明,这可能是由于数据库与 PHP 不在同一台计算机上造成的 - 当原始网站指向远程数据库(另一台专用计算机或 Azure SQL 实例)时,页面加载时间会增加到40 秒范围。
在 Azure 案例中,网站和数据库位于同一区域(北欧)。使用我们的机器进行测试时,两台机器均位于英国。
当前的虚拟主机正在运行 PHP 5.4 和 Microsoft SQL Server Express Edition。 Azure 网站在 PHP 5.4 上运行。
在这两种情况下,我们都使用 3.0.1 Microsoft SQLSRV 驱动程序
如何提高连接远程 SQL 数据库时的性能?
此问题已交叉发布到服务器故障 https://serverfault.com/questions/496505/why-is-php-mssql-very-slow-when-the-db-is-not-on-the-same-machine-as-the-php
最佳答案
就我而言,DNS 解析速度很慢,在输入 IP 而不是 MSSQL 名称后,一切正常
关于php - 当数据库与 PHP 代码不在同一台机器上时,为什么 PHP -> MSSQL 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835623/