代码之家  ›  专栏  ›  技术社区  ›  selfawaresoup

如何加速mssql_connect()

  •  3
  • selfawaresoup  · 技术社区  · 16 年前

    我正在开发一个项目,其中一个PHP对话系统正在与Microsoft SQL Server 2008通信,我需要在PHP方面提高速度。

    在分析了我的PHP脚本之后,我发现在那个特定的系统上调用mssql_connect()需要大约200毫秒。对于一些简单的对话框,这大约占整个脚本运行时的60%。所以我可以通过加速这个呼叫来获得巨大的性能提升。

    我已经保证,对于我的PHP脚本的每个请求,只生成一个连接句柄。

    是否有方法加快与SQL Server的初始连接?但也有一些限制:

    • 我不能使用PDO(这里有很多旧代码无法使用)
    • 我没有访问SQL Server配置的权限,因此我需要一个PHP端解决方案
    • 我不能升级到php 5.3.x,再次是因为糟糕的遗留代码。
    3 回复  |  直到 13 年前
        1
  •  3
  •   Pekka    16 年前

    嗯,我不太了解MS SQL,但是优化单个调用可能很困难。

    想到的一件事就是尝试 mssql_pconnect() 当然:

    首先,在连接时,该函数将首先尝试查找已经用相同的主机、用户名和密码打开的(持久)链接。如果找到一个,将返回其标识符,而不是打开一个新连接。

    但你可能已经考虑过了。

    第二件事,您不是说MS SQL是否与PHP部件在同一台机器上运行,但如果不是,可能有一个基本的网络问题在手边?经典的速度有多快 ping 在一个主机和另一个主机之间?对于未完全配置的虚拟机也是如此。200毫秒听起来真的很慢。

    然后,在用户向mssql_connect()提供的注释中,有 talk 关于MS SQL的本机PHP驱动程序。我对它一无所知,它是否属于“旧”语法,以及它在您的情况下是否可用,但它可能值得一看。

    用户贡献的笔记总是值得一看的,有一些小道消息 this one :

    以防万一它能帮助这里的人…我们被来自iis6-->SQL Server 2000的极慢的连接所破坏。从CGI切换到ISAPI稍微解决了这个问题,但最初的连接仍然需要10秒的时间,最终连接将不再工作。

    解决方案是将数据库服务器IP地址添加到服务器上的主机文件中,并将其指向内部计算机名。看起来是某种DNS查找造成的。

    现在,连接和查询都飞起来了,世界又一次对了。

        2
  •  3
  •   Bill Butler    13 年前

    最近我们在php 5.3、freetds和mssql之间进行了很多优化。假设您有足够的服务器资源,我们发现两个更改使数据库交互更快、更可靠。

    1. 使用mssql_pconnect()而不是mssql_connect()消除了 间歇性“无法连接到服务器”问题。我读了很多帖子 这表明与持久性相关的负面问题 但到目前为止,我们还没有看到任何迹象表明 一个问题。PHP服务器似乎保持在20到60之间 与数据库服务器的连接取决于负载。
    2. 在freetds.conf文件中使用数据库服务器的IP地址 而不是主机名也会增加速度。
        3
  •  1
  •   Rufinus    16 年前

    我唯一能想到的是使用IP地址而不是SQL连接的主机名来节省DNS查找。也许持久连接是一种选择,而且速度要快一点。

    推荐文章