ホームページ  >  記事  >  バックエンド開発  >  mysql に基づいた BBS デザイン (1)_PHP チュートリアル

mysql に基づいた BBS デザイン (1)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:03:291151ブラウズ

1.システムアーキテクチャ:
モジュラー思考を採用し、3 つの層に分かれています:
a.データストレージ層: mysql を使用して、ユーザー情報、
記事データ、ユーザーレター、ユーザーメッセージ、システムデータ (?)、重要な質問を含む、BBS のすべてのデータを保存します:
データベース計画を支援するためにファイルを使用するかどうか。
b.システム関数層: 複数の並列モジュールで構成される bbs の基本機能を完了します。下位では、mysql 関数を呼び出してデータベースにアクセスし、処理要求を受け取り、要求の種類に応じて処理結果を上位層に返します。成功または失敗の結果およびその他のデータを返します。さらに、モジュールは柔軟性が高く、簡単に変更および追加できます。含まれるもの:
** ユーザー登録、基本データの変更、権限の変更、
およびネチズン情報のクエリを処理するユーザーモジュール。
** レイアウト モジュールは、記事の公開、記事の読み取り、記事の削除、記事のマーク
、および読み取り、変更、削除の権限の確認を担当します。このモジュールには、データベースに対する最も高い要件があります。
** エッセンス エリア モジュールには、エッセンス エリア内の記事、ディレクトリの追加、削除、および移動が含まれます。
(?) 読み取り、変更、および削除の権限チェックが困難の 1 つです。
** レター モジュールには、新しいレターの送信、レターの読み取りと削除、レターのマーク、および新しいレターの通知が含まれます

** メッセージ モジュールには、メッセージの送信、メッセージの受信、新しいメッセージの通知、メッセージの確認、
へのメッセージの保存が含まれます手紙。
** システム動的モジュール (サイト上の現在の人数、頻繁な変更による現在のダイナミクスを含む)
このタイプのデータを実装するには、共有メモリを使用する方が良い場合があります。
** チャット モジュール、2 人チャットは、双方が直接話す icq の実践から学ぶことができますか
しかし、チャットの結果として文字を保存するのは面倒かもしれません。同時に、 Telnet機能と互換性があり、
上位サービス層がTelnetの場合、処理に特別なモジュールが追加されます。
** チャット ルーム モジュール、共有メモリまたはデータベースを使用しますか?ルームを開き、内部の権限を許可します

必要に応じて新しい機能を追加できます。例: アクティビティ サイネージ モジュールですが、非 Telnet 端末の場合、ほとんど意味がないようです。 。 。 。 。
c.サービス層: クライアントと直接通信し、クライアントの要求に従って汎用モジュールを呼び出してデータを取得し、クライアントの種類に応じてさまざまなサービス モジュールを開発し、それらを可能な限り合理的に抽象化します。 . 異なるサービス層がシステム機能層のモジュールを共有できるようにします。具体的には:
++ cq66 サーバー、オリジナルの cq66 方式を採用し、システム機能層のすべての機能をサポートするようにプロトコルを再計画します
が、下位互換性があれば特別なクライアント プログラム (cq66) が必要です。 , サーバーのアップグレードに合わせてクライアントプログラムもアップグレードする必要があり、ユーザーには不便が生じる可能性があります。必要に応じて、sshと同様に送信処理中に暗号化機能を追加できます。
++ Telnet サーバーは古い bbs 方式を使用しています。一部の機能はサポートされていません。クライアントをアップグレードする必要はありません。サーバーはクライアントのステータスを保存し、クライアントのキーストロークに基づいて
ステータスの転送を判断する必要があります。ここから必要なデータ (記事の読み取りなど) を取得し、システム機能層にデータを要求し、データを処理 (最上位行、
最後の行を追加するなど) してからデータを返します。既存の bbsd にあるものを修正すると、io モジュールの設計を保存できます
が、記事以外は変更が難しくなりますが、一から書くのは手間がかかりすぎます

++ httpd サーバーは必要な関数が少なく、比較的シンプルです。mysql を直接呼び出すことができます。
データベースも問題ありません。php を直接使用することもできますが、階層化の原理を考慮すると、やはり C コードを使用して実装することをお勧めします。 cgi オリジナルをベースに改変できるのかな?おそらくそうではありません。
システムの重要な点と難しい点:
a.データベース設計、mysql は多数のテーブルをサポートしていますか?例えば何万とか?各ユーザーには少なくとも 1 つのテーブルがあり、各バージョンには 1 つのテーブルがあります。エッセンス領域のテーブル構造はさらに複雑になる場合があります。
ただし、現在の bbs ファイル構造よりも常に明確で効率的でなければなりません。
ソートとキャッシュ機能には mysql を使用できます。
b. MySQL のテキスト フィールドのサイズ制限は、記事を 64k 以内に制限するのが大きすぎません
効率の観点からは、記事を最大 2k のブロックに保存する方が良いかもしれません。このようにして、Telnet ユーザーが記事を読むとき、Telnet サーバーは毎回データベースにクエリを実行して数十キロバイトのデータを読み取り、そのうちの 2K をユーザーに渡す必要がなく、部分的に補うことができます。データベースフィールド
であり、ファイルのように途中からその一部を読み取ることはできません。ただし、記事フィールド データの管理はさらに複雑です。
2.システム開発計画:
ユーザーモジュールとレイアウトモジュールを最初に検討し、既存の bbsd と組み合わせやすいデータ構造を計画します。次に、他のモジュールを検討しますか? 。 。 。 。 。 。 。
(//以下は時間があるときに書きます...先に寝てください...うーん......)
3.データベース設計
4.ユーザーモジュール設計
5.レイアウトモジュール設計
6. bbsd と cq66 サーバー側の変更
7.予備テスト計画。



http://www.bkjia.com/PHPjc/316248.html

www.bkjia.com

http://www.bkjia.com/PHPjc/316248.html技術記事 1.システム アーキテクチャ: モジュラー思考を採用しており、次の 3 つの層に分かれています。データストレージレイヤー: mysqlを使用して、ユーザー情報、記事データ、ユーザーレター、ユーザーメッセージなど、BBSのすべてのデータを保存します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。