質問の背景
私は、 moodle CMSで使用されている *.php ファイルをブラウズしています。Moodle は PHP スクリプトを使用して、訪問者に動的に送信される HTML ページのコンテンツを生成します。多くの場合、次のようなことが起こります (「包含カスケード」)。
// file: file1.php
require(file2.php);
と
// ファイル: file2.php 必要 (file3.php); 必要 (file4.php);
等...
実際、要求された *.php ファイルから開始して、最終的にいくつかの出力を生成するまで、必要な他のファイルのインクルードがかなりカスケードされます。これが非常に理にかなっているとしても、速度/パフォーマンスへの影響が心配です。そのたびに初期化を何度もやり直しているようです。
質問
HTTP プロトコルがステートレス プロトコルであることを知っていると、サーバーに送信される各要求に対して、PHP/CGI コードで行われる可能性のあるすべての初期化を何度も実行する必要があるように思えます。これは有効な/真の仮定ですか?
例: データベースにアクセスする必要があり、この「より安全な」準備ステートメント/サニタイズなどをすべて実行するのに役立ついくつかのオブジェクトを使用して、これを安全に行いたいと考えています。myDatabaseAccessObject.php
)。
例に関しては、質問は次のとおりです。HTTP がステートレスであるという性質のために、要求ごとに
セットアップ (つまり解析) の作業が最初からやり直されるのを防ぐ機会がないというのは本当かどうかです。 myDatabaseAccessObject.php
?
それとも、PHP はすでに行われた作業をキャッシュする方法を超えていますか? (もしそうなら、透過的な方法で行われる (つまり、スクリプト作成者が何をキャッシュするかを伝えることができる) または隠蔽された方法で行われる場合、php エンジンは、作成者には見えないキャッシングを行いますか?)
何が起こっているかについて完全に間違った認識を持っているのでしょうか、それとも実際に何度も何度も作業が行われているのでしょうか? PHP スクリプトに必要な初期化が複数の後続のリクエスト間で保存されていれば、これを保存できますか?