0

PHP経由でAJAX(jquery)で完全に機能するギャラリーWebサイトを構築しています。

私が構築した他のウェブサイトから CORE を用意しました。

私の問題は次のとおりです。Web サイトのコア (db、urlmanager、defines&constants など) を、ajax でロードするすべてのページではなく、1 回だけロードしたいのです。

IE: このページがあります: gallery.php、init.php、albums.php

しかし、AJAX ($.ajax ...... albums.php) でそれぞれを呼び出すときは、「require_once ... core.php」を実行する必要があります。

また、各呼び出しで別の DB 接続を開きます。

解決策はありますか?そうでない場合、php を ajax アプリケーションに適合させる最良の方法は何ですか?

4

2 に答える 2

2

PHP はスクリプト化された言語であるため、ページを読み込むたびにすべての関連ファイルを含める (または要求する) 必要があります。物事を簡単にする解決策がいくつかありますが、根本的な事実は変わりません。

可能な解決策:

  • コア ファイルを単一の.phar(PHP アーカイブ) ファイルに保存します。PHAR は、ライブラリ全体を単一のファイルに結合して、読み込みを容易にする方法です。プログラムに phar ファイルをインクルードする必要がありますが、一度インクルードしなくても、ファイル内のすべてのクラスを使用できるはずです。詳細はこちら: http://phpmaster.com/packaging-your-apps-with-phar/

  • Autoloader メカニズムを使用します。PHP には、クラスが参照されたときにクラスを自動的にロードできるオートロード システムがあります。これにより、必要なファイルを手動で含める必要がなくなります。検出したファイルをインクルードするオートローダー関数を作成し、オートローダーがファイルを検出できるようにコードを構成する必要がありますが、メインのコードベースにはインクルードが多すぎないようにする必要があります。詳細については、こちらをご覧ください: http://phpmaster.com/autoloading-and-the-psr-0-standard/

  • APC や Opcode などの Opcode キャッシュを使用します。これらのツールは PHP 拡張機能であり (ただし、PHP 5.5 がリリースされると Opcode 拡張機能が組み込まれます)、PHP インタープリターを介して実行された後、PHP コードをメモリに保持します。これは、次に同じコードをロードするときに、再度処理する必要がないため、より速く実行されることを意味します。これは、コード内の include/require の数には影響しませんが、PHP インタープリターがそれらを繰り返し処理する必要がないことを意味します。オペコードのリンクは次のとおりです: https://blogs.oracle.com/opal/entry/using_php_5_5_s

  • HipHop などの PHP コンパイラを使用します。これは極端な終わりです。コードベース全体を実行可能ファイルにコンパイルするだけです。PHP に何も含める必要はもうありません。これを実現するには、コードベースを再構築する必要がある場合があります。HipHop についてはこちらをご覧ください: http://www.hiphop-php.com/wp/

上記のオプションのほとんどは組み合わせることができるため、たとえば、オートローダーで使用される phar ライブラリを記述し、それを高速化するためにオペコード キャッシュを使用することができます。

それが役立つことを願っています。

于 2013-04-23T11:43:14.370 に答える
0

ajax をロードしたページで db リクエストを実行する必要がある場合、それを回避する方法はありません。これは新しいリクエストであるため、db php ファイルを必要とする必要があります。

db リクエストを行う必要がない場合は、単に db ファイルをロードしないでください。

于 2013-04-23T11:38:49.977 に答える