0

大規模なWebサイトを構築していて、スケーラブルにしたいと考えています。私は最近、高負荷プロジェクトの経験豊富な開発者(Oleg Bunin)によって書かれた記事を読みましたが、次のように述べています。

高負荷アプリケーションは、次の3つの部分に分割する必要があります。

1)フロントエンド(HTML、CSS、JS、画像)

2)バックエンド(サーバー側:PHP、Python、またはその他のサーバー側言語を使用した大量の計算タスク)

3)データベース

この場合、アプリケーションは大量のトラフィックに耐えることができます。また、この記事では、SQLクエリはアプリケーションの1か所に配置する必要があると指摘しています。

PHP5OOPとMySQLデータベースを使用しています。私の解決策:

1)すべてのSQLクエリをクラスに配置しました。

2)データベースレイヤークラスにラップされたPHPPDOを使用します。

3)各クラスはデータベースレイヤーオブジェクトで初期化され、それを使用してSQLクエリを実行します。

例:

// On the public accessible page
$DBH    = new RwtDatabaseLayer(['messages']); # database name
$msgs   = new GetMessages($DBH);

そして私のGetMessagesクラスでは:

class GetMessages
{
    private $_DBH;

    function __construct($DBH)
    {
        $this->_DBH = $DBH;
    }
    function get_messages()
    {
            $this->_DBH->run(QUERY HERE); // `run` is Database Layer method
    }
 }

その結果、パブリックアクセス可能なページのコードにはSQLクエリが含まれていません。

私はこれを正しくやっていますか?

4

2 に答える 2

2

大量のトラフィックを処理できるようにしたい場合は、プログラムにキャッシュを組み込んでみてください。この意味で、すべてのクエリを特殊なクラスに含めると、それらの周りにキャッシュを構築するのに役立ちます。同じことが静的コンテンツ(html、css)にも当てはまり、圧縮/キャッシュされた状態で、または別のサーバー(またはカスタムCDN)から提供されます。

memcache(およびAPCなどのアクセラレータ)を確認することをお勧めします

于 2013-01-11T13:45:03.360 に答える
0

多くの主要なフレームワークで使用されているModelViewControllerのデザインパターンを読み、それらの主要なフレームワークの少なくとも1つを学ぶことを強くお勧めします。ZendFramework2Symfony2が出発点として適しています。IMOは、「大量のトラフィック」のWebサイトを作成する前に、テクノロジーと設計原則を本当に理解する必要があります。

于 2013-01-11T13:57:42.747 に答える