PHPの内部動作を理解するのに助けが必要です。
昔は、TSR(Terminate and Stay Resident)ルーチン(Windows以前の時代)を作成していたことを覚えていますか?そのプログラムが実行されると、それはメモリに残り、いくつかのホットキー(altキーまたはctrlキーの組み合わせ)によって再実行できます。
Webサーバー/アプリケーションでも同様の概念を使用したいと思います。たとえば、そのapache / phpサーバーで実行されているすべてのWebアプリケーションに共通の関数(Generate_City_Combo()、Check_Permission()、Generate_User_Permission_list()など)で構成されるcommon_functions.phpがあります。
すべてのモジュールまたはアプリケーションのphpファイルで、次のように記述できます
。require_once(common_functions.php);
これは、すべてのモジュールとアプリケーションにその共通ファイルを含み、正常に機能します。
私の質問は:phpはこれを内部的にどのように処理するのですか?
私が持っていると言う:2つのアプリケーションAppOneとAppTwo。
AppOneには2つのメニューオプションAppOne_Menu_PQRとAppOne_Menu_XYZがあります
AppTwoには2つのメニューオプションAppTwo_Menu_ABCとAPPTwo_Menu_DEFがあります
これらの4つのメニュー項目はすべて、common_functions.phpから関数{Generate_City_Combo()、Check_Permission()、Generate_User_Permission_list()など}を呼び出します。
次に、次のシナリオを検討します。A)ユーザーXXXがログインし、パーソナライズされたダッシュボードからAppOne_Menu_PQRをクリックしてから、すべての画面と手順に従います。これは一連の8〜10ページのリクエスト(画面)であり、インタラクティブです。これが終わった後、ユーザーXXXは自分のパーソナライズされたダッシュボードからAppTwo_Menu_DEFをクリックし、以前と同様にすべての画面と手順(約8〜10ページ/画面)を実行します。次に、ユーザーXXXがログオフします。
B)ユーザーXXXがログインし、シナリオAで説明されていることを実行します。同時に、ユーザーYYYも(他のクライアントマシンから)ログインし、シナリオAで説明されているのと同様のことを実行します。
シナリオAの場合、同じセッションです。シナリオBの場合、2つの異なるセッションがあります。
すべてのメニューオプションがGenerate_User_Permission_list()およびGenerate_Footer()を呼び出すか、多くのメニューオプションがGenerate_City_Combo()を呼び出すと想定します。
では、PHPはページリクエストごとにcommon_functions.phpを何回実行/インクルードしますか?セッションごと?またはPHPの起動/シャットダウンごとに?私の理解では、common_functions.phpは、ページのリクエスト/サイクル/ロード/画面ごとに1回実行されますよね?基本的に、すべてのインタラクションに対して1回です。
Generate_City_Combo()やGenerate_Footer()のような関数は、誰がいつ呼び出しているかに関係なく、同じ出力を生成するか、同じことを実行することを忘れないでください。
これをアプリケーションの起動とシャットダウンごとに1回に制限したいと思います。
これらは単なる例です。私の実際の問題はもっと複雑で複雑です。私のアプリケーションでは、Application_Startup()ルーチンを一度だけ呼び出して、理想的な環境(すべてのルックアップおよび参照データ構造、読み取り専用データ、セキュリティマトリックス、メニューオプション、コンテキスト依存のビジネス実行ロジックなど)を作成したいと思います。 。)。その後、サーバーに送信されるすべての要求は、環境を作成するために時間やリソースを費やす必要はありませんが、「作成済みの環境」を即座に参照できます。
これはPHPで実行可能なものですか?どのように?PHPの内部動作を説明している場所や本を教えていただけますか?
前もって感謝します。