2012-05-30 3 views
0

Я пишу пользовательскую библиотеку PHP MySQL, которая будет подключаться к нескольким серверам MySQL и обеспечивать балансировку нагрузки на уровне приложений. В основном он пытается подключиться к массиву серверов (все из них), первый из которых успешно соединяет выигрыши.Подключиться к серверу MySQL асинхронно

Проблема заключается в том, что для жизни меня не видно ни с помощью либо библиотек PHP mysql, либо библиотек 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 является только псевдо-многопоточным.

Это означает, что если несколько пользователей обращаются к одному и тому же сценарию, оба запроса выполняются параллельно, если они выполняются на многопоточном компьютере. Но вы не можете указать отдельные потоки, которые запускаются из одного вызова сценария.

Что вы можете сделать, это создать приложение AJAX с javascript, которое использует обратные вызовы, используя php на стороне сервера для извлечения ваших данных.

Смежные вопросы