0

ファイルを含めるときに私が疑問に思うこと:

ファイルを含めたい、またはファイルにリンクしたいとします。たとえば、次のようにする必要があります。

include("../localfile.php");

または代わりに使用する必要があります

include("http://sameserver.com/but/adirect/linkto/localfile.php");

一方が他方より優れているか?それともより安全ですか?それとも単なる個人的な好みですか?

複数のディレクトリのファイルに含めるファイルがあり、そのファイルに別のファイルが含まれている場合、またはそれを行う他の方法がある場合は明らかに必要になりますか?

4

6 に答える 6

5

ファイルの読み取りは、HTTP 要求を作成して応答を取得するよりもはるかに高速です。include(a_uri)あなたがそれを助けることができるなら決して。

インクルードの完全なファイル パスを計算する場合に使用$_SERVER['DOCUMENT_ROOT']します。

于 2010-04-26T14:54:22.287 に答える
1

ステージングから本番環境に移行するときに10億のパスを変更する必要がないように、それを維持することについて質問がある場合は、私が学んだこのちょっとした情報を参考にしてください。

 define('BASE_DIR',  '/path/to/root/');

次にBASE_DIR、すべてのパス参照で使用します。/サイトを移動するときは、その定義を新しいパスに変更するだけです(その時点にあるはずです)。

于 2010-04-26T15:01:23.953 に答える
1

前に述べたように、必ずローカル ファイルをインクルードし、HTTP リクエストを実行しないでください (より多くの時間がかかり、キャッシュされず、どこで検索すればよいかを知っていれば、コンテンツは技術的に世界中で閲覧可能です)。
もう 1 つの詳細は、インクルード ファイルへのフル パスを使用する場合、特に何らかのバイト コード キャッシュを使用する場合は、相対パスよりも高速になります。

于 2010-04-26T14:59:24.777 に答える
1

php スクリプトは、ローカル サーバーにスクリプトをインクルードしていることを認識していないか気にしないため、必ずローカル ファイルをインクルードしてください。そのため、URL パスによって http リクエストが発生し、http リクエストからのネットワーク レイテンシがほとんどのボトルネックになります。一般に、HTML ページをレンダリングする場合、それらの数が少ないほど、より良い結果が得られます。

個人的には、 and の使用を避けincluderequire一般的にはを使用するようにしています。これはrequire_once、使用require_onceすると、コードをインクルードするとすぐに実行されるコードを記述するのではなく、再利用可能なコードを記述することを意味するためです。クラス定義を取り込み、関数ライブラリを取り込みますが、再利用が難しくなるため、インクルードするとすぐに実行されるコードは避けてください。

于 2010-04-26T14:55:29.527 に答える
1

他の人が言うことに加えて、これらの呼び出しの結果は異なります。これは、 remove 呼び出しがファイルの内容ではなくphp outputを実行するためです。PHPがファイルを処理するのを止めない限り、その場合、コードを世界に公開していますが、これは必ずしも実際に望んでいることでもありません。

于 2010-04-26T15:08:20.777 に答える
0

常にローカルに含めてください。リモートの誰かが別のファイルを作成して厄介なことをする可能性があるためです。そして、リモートインクルードでこれを実際にテストできないもう1つの問題があります。私の知る限り、代わりにrequire_onceを使用する必要があります...

于 2010-04-26T14:56:27.730 に答える