1

大学の友達のために小さなチャット ルームを作成する予定です。お金を投資したくないので、IRC サーバーをインストールできない無料のホストを使用します。また、既に知っている ajax と PHP を使用するのが好きです。

自己更新型の ajax と PHP ページは良い考えですか? 毎秒のように、ajax は PHP スクリプトをトリガーし、最新の情報を返します。たとえば、チャット履歴に 20 個の MySQL エントリがあるとします。

ユーザーが何かを書き込むと、それは MySQL DB に挿入されます。

これは良い考えですか?

メッセージを保存するための他のアイデアはありますか? MySQL よりも最適化されたものはありますか?

または、私の目的を達成できるまったく異なるアイデアはありますか?

前もって感謝します!
アンディ:)

編集:どちらが良いですか:MySQL DBまたはテキストファイル? (jquery ではテキスト ファイルが優先されますが、なぜですか?)

4

4 に答える 4

2

おそらく、無料のホストには悪いデータベースが必要です。そのため、継続的にアクセスすると、チャットが非常に遅くなります (チャットがあまり使用されない場合を除きます)。

とにかく、目的に合わせて使用​​できる無料のオプションがいくつかあります (自分で開発する代わりに):

http://www.phpfreechat.net/

http://www.phpopenchat.org/

http://hot-things.net/blab-lite-ajax-chat

そして、ここに例を含むいくつかのチュートリアルがあります:

http://css-tricks.com/4371-jquery-php-chat/

http://www.tutorialized.com/tutorials/PHP/Chat-Systems/1

http://php.resourceindex.com/Complete_Scripts/Chat/Shoutbox/

よろしく!

于 2011-09-25T11:00:03.200 に答える
2

メモリ テーブルを使用すると、HDD 速度を大幅に節約でき、適切なインデックスを選択する必要があります。

DB 構造の例:

CREATE TABLE `chat` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `channel` varchar(16) NOT NULL,
 `user` varchar(32) NOT NULL,
 `text` varchar(255) NOT NULL,
 `private` varchar(32) DEFAULT NULL,
     PRIMARY KEY (`id`),
 KEY `private` (`private`),
 KEY `channel` (`channel`)
) ENGINE=MEMORY

約 70 ~ 80 人のユーザーがオンラインになりましたが、サーバー (2 GHz CPU を搭載したサーバー) に負荷がかかりません。

于 2011-09-25T10:56:23.680 に答える
1

これは、基本的なチャット ルームに対する典型的なアプローチであり、私には問題ないように思えます。私が提案する唯一のことは、各チャット レコードに自動インクリメント ID を割り当てて、受信した最新のメッセージを ajax が追跡できるようにすることです。このようにして、最後に受信したメッセージの ID が 100 の場合、ajax は ID が 101 以上のアイテムを要求できます。次に、新しいメッセージを取得するだけで、ページ全体を更新するのではなく、チャット ウィンドウに追加することができます。

于 2011-09-25T10:58:32.133 に答える
0

なぜ再び電気を発明したいのですか?あなたが言ったように:

または、私の目的を達成できるまったく異なるアイデアはありますか?

チャットルームがたくさんあるのに、なぜ使わないのですか?

とにかく、プログラミングの観点から言えば、小さなチャット ルームを作ろうと考えているなら、あなたのアイデアは良さそうです。しかし、ユーザーが増えると、サーバーの過負荷に直面し、空きホストでクラッシュが発生する可能性があります.

于 2011-09-25T10:59:06.440 に答える