2012-06-02 26 views
1

我有一个php页面,需要从数据库中进行一些查询。所以我开始写下几个函数,并且我注意到我需要确保连接处于活动状态,并在数据检索完成时关闭连接。不过,这并不需要一个天才推测,这不是解决办法这一问题的最聪明的办法:如何给连接到db的PHP代码提供结构

function getConnection() { 
//it connects 
} 

function killConection() { 
//it closes connection 
} 

function getData() { 
getConnection(); 
//it gets data 
killConnection(); 
} 

function getVeryImportantData() { 
getConnection(); 
//it gets data 
killConnection(); 
} 

//... and so on ... 

我当然不希望建立每个我需要请求一个新的数据库连接,因此我想知道是否有一种方法来组织我的代码,以便在需要时保持连接处于活动状态,如果因任何原因而关闭,则会重新连接,并在所有必需的操作完成时断开连接。

回答

1

我会怎么做:

  1. 创建应用程序类,它是你的
  2. 实际页面
  3. 的方法添加到这个类initilizes数据库连接,并保存它说$this->databaseConnection财产,这样一来你可能会在稍后检查您是否已经拥有数据库连接。
  4. 您提到的其余功能可以设置为应用程序类的方法。

这比简单的脚本稍微复杂一点,但我认为这是值得一试的。它可以帮助您以正确的方式规划您的应用程序,这也有助于正确构建您的应用程序。

另外,使用PDO是个好主意。

让我知道你是否需要这种方法的帮助。

+0

我正在使用PDO,我更愿意让一个班级管理PHP/MySQL交互。你认为我的实际页面可以实例化一个my-app-class对象并执行所需的任务吗? – haunted85

+0

我不熟悉yor代码或其结构的背景,但不管那些,当然可以。 –

+1

@ haunted85:搜索一下叫做* lazy initialization *的东西,应该和PDO一起工作。 – hakre

2

的解决问题的方法很简单:

  1. 只开放到数据库的连接,如果你需要一个(和一个尚未被打开)
  2. 只有关闭连接到数据库,如果你知道,你不需要额外的一个。

这将导致进程只会在数据库查询完成时打开数据库连接。

数据库连接 - 如果未特别关闭 - 将在脚本完成后自动关闭。

千百万的网站使用这个原则,他们或多或少的工作!所以我认为这并不坏。

+0

一点都不差。这是mysql机制,它在最佳状态下进行了优化,只有在非常罕见的情况下才会有所不同。 –

+0

@EduárdMoldován:我现在无法赞成,否则我已经提出了你的答案,因为你举了一个更具体的例子。 – hakre