8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laravel4 websocket実装で注意するポイント

Posted at

laravel4に限らない話ですが、websocket関連の実装を行うときに
一番はまりやすい問題がロングポーリングではないでしょうか。
websocketを使って何かを実装する場合は、Redisはほぼ必須なのではないかと思いますが、
環境によってはRedisが使えなかったり(物理的に使えないサーバなんてあるんですかね?)
企業にお勤めの方は導入そのものがされていないので使えない!って方も居るかもしれません。
その場合は既存のDBを使用したりすると思いますが、
websocketはリアルタイムでイベントを拾っていくので、
php的には終了させるまで無限ループになっている中で処理を実装する、
とイメージしてみるといいかもしれません。

つまりどういう事かと言いますと、
Databaseを利用する場合は、明確に接続を終了させなければDBが1クエリーずつwaitとなって溜まるので、
あっという間に Too many connections になります。

ここでlaravel4で実際に実装していくと気になる点が1つ
disconnect

公式リファレンスにもtoo manyでたらdisconnectしましょう、とあります。

websocketはループで実装するので、disconnectを記載しますが、
実はQueryBuilderだとsleepになって残る様です。

ですのでシンプルなSQLでここは一つ

DB::connection('foo')->select('select * from users where id = ?', array(1));

とします。
modelをwebsocket関連でまとめているのであれば、

public function __destruct()
{
    DB::disconnect('foo');
}

関係ありませんがweblioによると、わくわくする日本語訳になりますね!

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?