2012-05-30 57 views
0

我正在编写一个定制的PHP MySQL库,它将连接到多个MySQL服务器,并提供应用程序级别的负载平衡。基本上它试图连接到一系列服务器(所有这些服务器),第一个成功连接胜利。异步连接到MySQL服务器

问题是,对于我的生活来说,我没有看到mysqlmysqli PHP库的异步连接方式,即使用回调。显然,我不想阻止每次连接尝试,或者库将不得不等待超时,然后尝试下一个服务器。

它应该是这样的:

foreach($servers as $server) { 
    mysql_async_connect($server, function($connection) { 
     if($connection) { 
      //Use this connection, successful 
     } 
    } 
} 

这怎么可能?有人写过一个异步PHP库来连接MySQL吗?谢谢。

+2

这就是为什么我们[不要使用PHP](http://twistedmatrix.com/documents/current/core/howto/rdbms.html)。 –

+0

是的,我知道我可以在节点上写这个,但是应用程序代码是PHP。 :)可能必须导致使用合法的负载平衡器。 – Justin

+0

为什么不使用REST呢? –

回答

2

你正在做的事情将无法工作 - PHP只是伪多线程。

这意味着如果多个用户访问相同的脚本,并行执行这两个请求(如果它在多线程机器上运行)。但是,您不能指定从单个脚本调用开始的单独线程。

你可以做的是用JavaScript创建一个AJAX应用程序,它使用回调函数,在服务器端使用PHP来获取数据。