2011-12-09 6 views
4

私はゆっくりと時間をかけてレッスンを学習しています。チャンネルに登録しているウェブサイトの「リスナー」を作成するためのオプションに興味があり、メッセージの受信時にウェブページを更新します。redisリスナーの作成 - PHPで可能ですか?

今、私の古いactionscript daysと現在のjavascriptの仕事から、私はこれらの2つの言語のリスナーの概念に精通しています。しかし、私のサーバー側プログラミングは、実際にはPHP、少しの軌道、少しのPython、pseudo node.jsまでしか拡張していません(私はかなり経験豊富なjavascriptの人で、node.jsのしくみを理解しています)。

私の主なスキルセットはPHPにあるので、永続的な接続/ソケットをPHPで実行してPHPでリスナーを作成することも可能ですか?

これは実際には可能ではないと思うので(またはハンマーでフロントガラスの亀裂を修理するのと同じです)、いくつかのサーバーサイドオプションはありますか? Redisサーバー(現在はlocalhost上)への永続的な接続を使用するjavascriptリスナーを作成することは可能ですか? Socket.ioは私が調べなければならないものですか?

初心者向けの洞察は非常に高く評価されます。


編集私は部分的に私の質問に答えるここHow to use redis PUBLISH/SUBSCRIBE with nodejs to notify clients when data values change?偉大なポストを見つけました。

同じことを行うnode.js以外の方法はありますか?私は完全にPHPを落として、このプロジェクトのために何か新しいことを試してみました。それはとにかく個人的なものです。

+0

私はあなたが達成したいことをかなり得ていません。 PHPはサーバーサイドなので、ページはページの読み込み時に更新されます。あなたがまだイベント/オブザーバータイプのメカニズムを探しているなら、これを使うことができます:http://components.symfony-project.org/event-dispatcher/。そして、これはあなたにとっても面白いかもしれませんhttp://rediska.geometria-lab.net/documentation/usage/publish-subscribe/。しかし、もう一度、私はあなたが何をしたいのか、かなり取得しません.. –

+0

@KristianHildebrandt私は多かれ少なかれ、ライブアップデートタイプのアプリケーションを模索しています...しかし、多くの掘り出しを行った後、これを行う唯一の本当の方法は、node.jsなどのリスナーを使用するように構築されたものを使用して構築することです。 リンクに感謝します。 –

+0

@Jonathan Coe:答えを受け入れてください。 – McK

答えて

1

redisでチャンネルを購読してから何か作業をする場合はサーバー側のようになります。 Predisとphpredisの大雑把な一見は、両方ともredisチャンネルに加入し、メッセージが受信されるたびに起動するコールバックを登録できることを示しています。

+0

チップをありがとう!私はこの質問を投稿して以来、私は多かれ少なかれredisについてかなり重要な扱いをしてきました...ほとんどは、mysql→redisのプロジェクト全体を移植し、Predisを使ってメディエータとして動作します。 かなり素晴らしいソフトウェアです。私は物事の全体的なパブ/サブサイドでより良い扱いを得て、何ができるかを見て非常に興奮しています。 –

2

redis内のpub/subメカニズムは、サブスクリプションされたクライアントが永続的であること、つまりサブスクリプションを介して更新を受信するために「常にオン」であることを要求します。

PHPスクリプト/アプリケーションをデーモン化することは可能ですが、それは理想的ではなく、PHPのコアコンピタンスの1つでもありません。

別の解決策を探すことをおすすめします。あなたが言及したnode.js + redis + pub/sub投稿が魅力的だと分かった場合は、おそらくそれをもっと強く考慮する必要があります。

redis-storedデータの設計方法を再検討することもできます。アイテムが「ポップ」される可能性のあるセットは、redis pub/subの使用を必要とせずに同じ目的に適合するでしょう。

1

GithubのPredisソースコードのとDispatcherLoopの例は、PHPで達成しようとしているもののさまざまな実装です。

関連する問題