2011-09-23 45 views
5

我有一个web应用程序内置codeigniter和托管cloudcontrol。我使用一个普通的MySQL数据库来处理所有的数据持久性,现在我想使用除了MySQL数据库之外的一个mongodb数据库。建立在codeigniter之上的PHP应用程序可能同时连接到MySQL和mongoDB数据库吗?

我想使用mongodb作为作业队列来在我的工作人员和我的应用程序服务器之间保存消息。我已经得到了灵感,从本教程做到这一点:http://www.captaincodeman.com/2011/05/28/simple-service-bus-message-queue-mongodb/

  1. 这是可能的(使用两种不同类型的数据库,同时放 - 有/无盗号笨,我会假设它是)

  2. 完成此任务的任何提示?

---- ----编辑

我已经包括在我的CI项目这个库: https://github.com/alexbilbie/codeigniter-mongodb-library

当我尝试通过加载它:$this->load->library('mongo_db'); 我碰到这样的: enter image description here

我不知道我怎样才能让MySQL和MongoDB一起工作...

---- ----编辑

没关系我上面的问题,我不恰当地设置配置文件和困惑的错误...

+0

我不知道会使用专门用于工作队列的软件吗? – JohnD

+0

@JohnD,不能 - 我仅限于使用cloudcontrol,并且他们不提供任何相关信息。我研究过亚马逊SQS,但是延迟太高,而且对我们的目的而言可能会变得昂贵。 –

回答

6

是的,这是可能的,出来的框。

您需要在您的配置中定义两个组,一个用于mysql,一个用于mongodb。在你的应用程序中,你可以通过组名来加载这些数据库。

在你confugration.php:

$db['mysql']['hostname'] = "localhost"; 
$db['mysql']['username'] = "root"; 
$db['mysql']['password'] = ""; 
$db['mysql']['dbdriver'] = "mysql"; 
//... (full config omitted for brevity) 

$db['mongodb']['hostname'] = "localhost"; 
$db['mongodb']['username'] = "root"; 
$db['mongodb']['password'] = ""; 
$db['mongodb']['dbdriver'] = "mongodb"; 
//... (full config omitted for brevity) 

然后你会在你的数据库如下加载:

$mysqlDB = $this->load->database('mysql', TRUE); 
$mongoDB = $this->load->database('mongodb', TRUE); 

看看用户指南上 how to connect to multiple databaseshow to specify configuration groups

相关问题