Zend Framework を使用してチャット機能を構築しています。
JavaScriptでは、ajaxを使用してhttp://mydomain.com/chat/pull
、このような関数pullActionでリクエストします
public function pullAction() {
while ( true ) {
try {
$chat = Eezy_Chat::getNewMessage();
if($chat){
$chat->printMessage();
break;
}
sleep ( 1 ); // sleep 1 secound between each loop
} catch ( Zend_Db_Adapter_Exception $ex ) {
if ($ex->getCode () == 2006) { // reconnect db if timeout
$dbAdapter = Zend_Db_Table::getDefaultAdapter ();
$dbAdapter->closeConnection ();
$dbAdapter->getConnection ();
}
}
}
}
このアクションは、他のユーザーがメッセージを送信するまで実行されます。
しかし、このリクエストの実行中は、自分のサイトの他のページに移動できません。http://mydomain.com/chat/pull
それらはすべて、実行が完了するのを 待ちます。
Google で解決策を探していますが、まだ見つかりません。
お手伝いありがとうございます。