2011-01-05 54 views
3

これらのシステムのうち1つをゼロから作成する方法を学びたいと思います。私はGoogleで多くのジャンクリンクを見つけています。私は、基本的なPHPとMySQLのチャットのための簡単なチュートリアルがほしいので、jQuery/AJAXを使いこなす前にその概念を理解することができます。PHP/MySQLライブチャットを作成するにはどうしたらいいですか?

+2

のようなコールバックとイベント駆動型の言語を使用しないことですあなたがそれを心配している面が助けになるでしょう。あなたは、PHP、データベース設計などの専門知識のレベルが何であるかを言わないので、どのレベルのチュートリアルをお探しですか? – Polsonby

+1

フレーム+ 'meta-refresh'はAJAX時代の道のりでした –

+0

どのように曖昧な質問です。すべてのことについて教えることを求めるのではなく、プロジェクトの特定の部分について助けを求めるならば、もっと運があるかもしれません。 –

答えて

2

非常に単純な出発点

メッセージ

id | user | timestamp | message 

のためのデータベーステーブルを持っており、すべての新しいメッセージを読むためのAJAX要求を送信するPHPページを持っています。

これは、リクエストを受信して​​からメッセージがあるかどうかを確認するためにデータベースをチェックすることを含みます。メッセージがない場合は、ループしてから100ms後にもう一度試してみてください。

Ajaxリクエストがメッセージを返すとき(JSONレスポンスが最も良い)、JQueryを使用してユーザー、時間、およびメッセージをページに出力します。

+0

私は最初のajaxアプリを書いたので、まだこれは非常に新しいです。ブラウザからポーリングするのは受け入れられますか?それは高いCPU使用率等を引き起こさないでしょうか? – zaidwaqi

+0

ブラウザからポーリングを行い、新しいメッセージが見つかるまでサーバーをループさせてから応答を返すことができます。これは長いポーリングと呼ばれるもので、ウェブプログラミングのソケットの必要性を取り除くいくつかの方法の1つです – Codemwnci

+0

興味深い...特にキーワード – zaidwaqi

3

チャットのライブ部分は難しい部分です。ちょうど始めているのであれば、私はそれをスキップします。 簡単なゲストブックを作成してから、さらに機能を追加します。

ゲストブックの作成方法や、学ぶことができる無料のスクリプトなど、多くのチュートリアルがあります。

ゲストブックを有効にしたら、AJAXポーリングを使用して新しいメッセージを自動読み込みするなどの機能を追加してライブとして表示できます。基本的にAJAXを定期的にサーバーに呼び出すと、すべてのメッセージが取得され、ページに表示されます。

+0

のためにありがとうございます。入ってくる顧客のメッセージを処理して対応するオペレータ(admin)が必要ですか?ですから、私が正しく理解すれば、管理側のスクリプトは、データベースの最新のエントリを(定期的に、10秒ごとにajaxを使って)チェックし、管理者、メッセージの詳細、および対応する顧客に表示します。管理者は顧客を選択して、彼に返信することができます。その後、顧客側では、その顧客をターゲットとしたメッセージを(再び一定間隔で)表示する必要があります。 –

6

PHP/MySQLは101チャット:

1)ユーザがbrowser
2)ユーザがブラウワーにaddress入る開き
3)ブラウザはHTTP要求
4)server recieves HTTPリクエスト
5)サーバーを送信PHPインタープリタに実行するように指示するPHP script
6)PHPスクリプトconnectsMySQL database
7)PHPスクリプトretrieves list of messages
8)PHPは、HTTPメッセージでHTMLコードで作られた応答とを生成form
9)サーバー)は、ブラウザ
10にHTTPレスポンスを送信し、ブラウザは、HTTPレスポンスから
11)ユーザー・タイプの新しいメッセージをHTMLを描画し、フォームを送信
ここ 12)ブラウザの送信HTTP POSTリクエスト
13)...

3

見つかり非常に興味深いチュートリアル

http://tutorialzine.com/2010/10/ajax-web-chat-php-mysql/

+1

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参考にするためのリンクを提供することが望ましいでしょう(http://meta.stackexchange.com/q/8259)。 –

0

チャットにphpとmySQLを使用する必要がある場合は、少なくとも未読メッセージ用に別のテーブルがあります。あなたがポーリングするならば、ほとんどの場合100ミリ秒ごとに新しいメッセージのデータベースをチェックする必要があります。合計メッセージテーブルが1000行である場合、100ミリ秒ごとにチェックするとサーバが停止します(特に多くのユーザが接続されている場合)。私は、未読のメッセージのみのテーブルを使用してmySQLデータベースを構造化し、一度読み込んだ古いメッセージの大きなテーブルにそれらを移動します。そうすれば、あなたはいつも大きなテーブルをチェックしません。

redisのような未読メッセージ(memcacheDで使用されているfacebook)にキャッシュデータベースを使用することは、さらに優れています。あなたが特定の上、もう少しそれを焦点を当てた場合、多分 -

であっても、より良いだけですべて一緒にPHPを使用して、私はこの質問は少し曖昧だと思うのNode.js

関連する問題