ホームページ >バックエンド開発 >PHPチュートリアル >mysql_PHP チュートリアルに基づいた BBS デザイン
1.システム アーキテクチャ:
モジュール思考を採用し、3 つの層に分かれています:
a。データストレージ層: mysql を使用して、ユーザー情報、
記事データ、ユーザーレター、ユーザーメッセージ、システムデータ (?) を含む、BBS のすべてのデータを保存します。 重要な質問:
データベース計画を支援するためにファイルが使用されるかどうか。
b.システム関数層: bbs の基本的な機能を完成させ、複数の並列モジュールで構成されます。下方向に mysql 関数を呼び出して、上方向に処理リクエストを受け取り、リクエストの種類に応じて処理結果を上位層に返します。成功または失敗の結果およびその他のデータ。さらに、モジュールは柔軟性が高く、簡単に変更および追加できます。含まれるもの:
** ユーザー登録、基本データの変更、権限の変更、
ネチズン情報のクエリを処理するユーザー モジュール。
** レイアウト モジュールは、記事の公開、記事の読み取り、記事の削除、記事のタグ付け、読み取り、変更、削除の権限チェックを完了します。このモジュールには、データベースに対する最も高い要件があります。
** エッセンスエリアモジュールには、エッセンスエリアの記事、ディレクトリの追加、削除、および移動が含まれています。
(?) 読み取り、変更、および削除の権限チェックが難点の 1 つです。
** 新しいレターの送信、レターの読み取りと削除、レターのマーク、新しいレターの通知を含むレターモジュール
通知
** メッセージの送信、メッセージの受信、新しいメッセージ通知、メッセージのレビュー、
メッセージの保存を含むメッセージモジュール。
** システム動的モジュール (サイト上の現在の人数、頻繁な変更による現在のダイナミクスを含む)
このタイプのデータを実装するには共有メモリを使用する方が良い場合があります。
** チャット モジュール、双方が直接会話できる icq の実践から学ぶことができますか?
ただし、telnet 機能と互換性を持たせるために、チャット結果を保存するのは面倒かもしれません。
上位サービス層がtelnetの場合、処理に特別なモジュールが追加されます。
** チャット ルーム モジュール、共有メモリまたはデータベースを使用しますか?ルームを開く、内部の許可
の質問。
必要に応じて新しい機能を追加できます。例: アクティビティ ビルボード モジュールですが、非 Telnet 端末の場合、ほとんど意味がないようです。 。 。 。 。
c.サービス層: クライアントと直接通信し、クライアントの要求に従ってデータを取得するために機能モジュールを呼び出し、クライアントにデータを送り返します。クライアントのタイプに応じて、さまざまなサービス モジュールが開発され、できるだけ合理的に抽象化されます。これにより、異なるサービス層がシステム機能層のモジュールを共有できるようになります。具体的には:
++ cq66 サーバーはオリジナルの cq66 方式を採用し、システム関数
層のすべての機能をサポートするようにプロトコルを再計画しますが、特別なクライアント プログラム (cq66) が必要です。下位互換性があればより良いでしょう。サーバーのバージョンアップに伴いクライアントプログラムもバージョンアップする必要があり、ユーザーには不便が生じる可能性があります。必要に応じて、sshと同様に送信処理中に暗号化機能を追加できます。
++ Telnet サーバーは古い bbs 方式を使用しているため、クライアントをアップグレードする必要はありません。サーバーはクライアントのステータスを保存し、クライアントのキーストロークに基づいてステータスの転送を判断する必要があります。必要なデータ (記事を読むなど) を取得し、システム関数層にデータを要求し、データを処理 (最上位行、
最終行の追加など) してからデータを返す、と結論付けることができます。既存のbbsd上にあるものを修正すればioモジュール
の設計は保存できますが、記事以外の部分を修正するのは難しいですが、一から書くのは大変です。
++ httpd サーバーは必要な関数が少なく、比較的シンプルです。php を直接使用して、mysql
データベースを呼び出すこともできますが、階層化の原理を考慮して、やはり C を使用して実装することをお勧めします。 . 原作をベースに改造できるのかな?おそらくそうではありません。
システムの重要な点と困難さ:
a.データベース設計、mysql は多数のテーブルをサポートしていますか?例えば何万とか?各
ユーザーには少なくとも 1 つのテーブルがあり、各バージョンには 1 つのテーブルがあります。エッセンス領域のテーブル構造はより複雑になる場合があります。
ただし、現在の bbs ファイル構造よりも常に明確で効率的でなければなりません。
ソートとキャッシュ機能については mysql を信頼できます。
b. mysql のテキスト フィールドのサイズ制限は、記事を 64k 以内に制限することです
そして、効率の観点からは、記事を最大 2k のブロックに保存する方がよいでしょう
このように、 Telnet ユーザーが記事を読む 現時点では、Telnet サーバーは、数十 KB のデータを読み取るために毎回データベースにクエリを実行し、そのうちの 2K をユーザーに転送する必要はありません。データベース フィールドを部分的に補うことができるため、読み取ることができません。途中からファイルのように部分的に。ただし、この方法での記事フィールド データの管理はより複雑になります。
2.システム開発計画:
まずユーザーモジュールとレイアウトモジュールを検討し、既存の bbsd
と組み合わせやすいデータ構造を計画します。次に、他のモジュールを検討しますか? 。 。 。 。 。 。 。
(//以下は時間があるときに書きます...先に寝てください...うーん......)
3.データベース設計
4.ユーザーモジュール設計
5.レイアウトモジュール設計
6. bbsd と cq66 サーバー側の変更
7.予備テスト計画。
http://www.bkjia.com/PHPjc/532070.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/532070.html
技術記事