在每个php页面的顶部包含require(“db.php”)会减慢速度吗?

时间:2011-02-28 17:42:13

标签: php mysql performance include require

我的db.php文件连接,选择和创建数据库和表(如果它们不存在)。当我需要(“db.php”)在每个页面的顶部时,它是否每次重新运行该代码?这会最终导致经济放缓,虽然是轻微的放缓吗?我是否真的要连接到数据库,选择它,并检查创建新表,如果它们不存在于需要查询数据库的每个页面上?对于这种情况,是否有最佳做法?我什么都不担心?

6 个答案:

答案 0 :(得分:2)

“创建数据库和表(如果它们不存在)”部分我将从引导过程中删除:它可能很昂贵,并且绝对不必在每个请求上运行。如果表不存在,请使代码正常崩溃。

建立数据库连接对于大多数PHP应用程序来说都是非常标准的,因为在大多数(如果不是全部)上下文中通常都需要它。

有可能构建一个“懒惰连接”的数据库包装器,即仅在实际需要时建立连接,但我不担心这个,除非你真的有理由基于性能测量。

答案 1 :(得分:1)

我会推荐你​​,

  1. 在实际查询之前不要与Db-server建立连接;只需将其置于待机模式并在第一个Db查询进入时进行连接。这就是Zend Framework的Zend_Db的工作方式,大多数框架都采用相同的思路:准备好资源,并在必要时使用它们。

  2. 让您的代码和项目框架尽可能整洁。慢代码总是优于不可读代码。

  3. 不要将工作例程与诊断混合在一起。检查Db及其表的完整性是诊断的任务,通常由Sysadmin定期执行(每周,每月等)。另一方面,工作惯例,总是假设事情是honkie dorie,并希望通过设置应急预防措施(最坏的情况下建立,并挽救一天)来实现最佳结果,以防事情向南发展。 / p>

答案 2 :(得分:0)

每次执行require时,该文件都会添加到脚本代码中。这段代码需要在运行时由php编译器处理。因此,每次运行脚本时,您都需要添加大约1kb的代码,这些代码需要由cpu处理。所以是的,你放慢速度,但减速是可以忽略不计的,只有你开始添加超过1MB的文件才会引起注意。 1MB的代码是很多代码。

答案 3 :(得分:0)

您可以将连接和选择放在该文件中,但如果它们不存在则创建它们对我来说似乎毫无用处。如果你创造它们,它们通常不会迷路。虽然建立连接通常是代码中最慢的部分,但是您没有太多选择 - 但是您可以尝试使用mysql_pconnect,一旦连接就更快。检查here
需要文件时使用的额外时间肉眼不可见,可以这么说,所以你不必担心。只要不过度使用,就可以更轻松地管理更多文件。

答案 4 :(得分:0)

可以肯定地说,如果您不需要一段代码,请不要调用它。但是,连接到数据库的文件不会占用太多(可能是5到6行不是很苛刻的代码)。

无论如何,如果您需要连接到数据库,那么除了包含该文件之外,您没有更多选项。

答案 5 :(得分:0)

首先使用require_once而不仅仅是require,基本上require_once(“db.php”)只会复制代码db.php的内容并将其粘贴到调用它的地方。因此,开销=打开文件+读取文件+复制文件+粘贴文件,最后解释该额外数据。