問題タブ [require-once]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - require、include、require_once、include_onceの違いは?
PHP の場合:
require
いつvs.を使用する必要がありますinclude
か?require_once
いつvs.を使用する必要がありますinclude_once
か?
php - メニューが正しくロードされた場合にのみサイトをロードしたい場合、PHPのrequire_once()は必要ですか?
ちょっと混乱しています。
メニューのすべてのHTMLを.phpファイルに入れて、エンジンにそれを正しく要求させますか?
php - 低ディスクI/O用にPHPrequire_onceを最適化しますか?
Q1) CMSを設計していますが(そうではありません!)、キャッシングが優先されています。文字通りすべてがキャッシュされます。DB行、DB IDクエリ、構成データ、処理済みデータ、コンパイル済みテンプレート。現在、2層のキャッシュがあります。
1つは、apc、eaccelerator、xcache、memcachedなどのオペコードキャッシュまたはメモリキャッシュです。そこにエントリが見つからない場合は、セカンダリスローキャッシュで検索されます。つまり、phpインクルードです。
オペコードキャッシュは、var_exportされたデータの配列を含むphpファイルに対してrequire_onceを実行するよりも実際に高速ですか?私の開発ボックス(XAMPPの5.3)が前述のプログラムのいずれかをインストールするとエラーをスローし続けるため、私のテストは決定的ではありません。
Q2) CMSには、すべてのファイルをロードするのではなく、オンデマンドで自動ロードされる多数のヘルパークラスがあります。ほとんどの場合、それぞれに前に要件があるため、自動読み込みを実行する必要はありませんが、これは問題ではありません。ページスクリプトには最大50/60のヘルパーファイルを含めることができるため、サイトにプレッシャーがかかると、これが発生するすべてのI/Oのためにサイトが座屈するだろうと感じています。私が提案しようとしていることの必要性を排除する出力キャッシュが配置されていること、そしてまたオペコードキャッシュがこの意味をなさないことを今のところ無視してください。私がやろうとしたのは、スクリプトの実行に必要なすべてのヘルパーファイルを1つのファイルに結合することです。これは達成可能であり、うまく機能しますが、技術的に同じコードが使用されている場合でも、メモリ使用量が大幅に増加するという副作用があります。
これについてどう思いますか?
php - 外部変数を Require_once にして、それらを php クラスの他の関数と共有する
私のphpクラスで必要とするいくつかの変数を含む外部ファイルがあり、それらを私のクラスのすべての関数と共有しています:
vars.inc:
class.php:
しかし、それは機能しません: $a 変数は未定義です
どのようにできるのか?
皆さんありがとう
php - PHPのrequire_once
require_onceステートメント(?)を持つphpファイルがあります。このファイルは他の2つのphpファイルに含まれます。1つのphpファイルはサブディレクトリにあるため、レイアウトは次のようになります("file1"と"file2"はファイルを含みます「必要」をrequire_oncesする「含まれる」)#
file1とfile2の両方で機能するように、「インクルード」ファイルから「required」ファイルを参照するにはどうすればよいですか?
php - PHPのrequire_onceのスコープは何ですか?
簡単な質問:範囲はrequire_once
グローバルですか?
例えば:
fooが呼び出されると、baz.phpを再解析しますか?または、メインのphpファイルからすでに必要なファイルに依存していますか(同じインクルードファイルに対してrequire_onceを2回連続して呼び出すのと同じです)?
私は以前にこのスレッドを見ましたが、それは質問に完全には答えませんでした:
require_once "some file.php"; ファイルの先頭以外の場所に表示されますか?
ご協力いただきありがとうございます!
php - PHP クラスはクラス ファイルを見つけますが、ファイル内のクラスではありません
あるファイルで抽象スーパークラスを定義し、別のファイルでサブクラスを定義しました。スーパークラス ファイルとスタック トレース レポートが含まれていることを確認する必要があります。
ただし、「extends」行に到達するとエラーが返されます: Fatal error: Class 'HTMLBuilder' not found in View/Markup/HTML/HTML4.01/HTML4_01Builder.php on line 7
.
少し前に、ファクトリを使用する別のクラス ツリーでこれを動作させました。ファクトリとコンシューマーの間にビルダー レイヤーを追加しました。ファクトリ レイヤーは、インクルードと依存関係に関してほぼ同じように見えました。
そのため、HTMLBuilder.php ファイルが正しく含まれていないか、正しく解釈されていないなどの愚かなことをしたに違いないと思います。
完全なスタック トレースは次のとおりです (パスはわずかに変更されています)。
問題のコードは次のとおりです。
親クラス (View/Markup/HTML/HTMLBuilder.php):
子クラス (View/Markup/HTML/HTML4.01/HTML4_01Builder.php):
php - 1800 行の PHP インクルードを高速化するにはどうすればよいですか? ページ読み込みが 10 秒/ビューまで遅くなる
すべての重要な関数を 1 つの PHP ファイルに入れるようにコードを設計しました。このファイルは現在 1800 行の長さです。
他の PHP ファイル (たとえば、AJAX プロセッサ) では、単純な "require_once("codeBank.php")" を使用して呼び出します。
いくつかのグローバル配列と関連する他の関数の束しか持っていないにもかかわらず、これらすべての関数をロードするのに約 10 秒かかることがわかっています。たとえば、メインの AJAX プロセッサ コードは、単純な構文検証を実行するだけで 8 秒かかります (その操作関数は codeBank.php に格納されています)。
require_once をコメントアウトすると、AJAX の応答時間が 10 秒から 40 ミリ秒に短縮されます。PHP が 1800 行の関数を使用して何かを実行しようとしていることは明らかです。それは驚くべきことに、APC をインストールした状態でも同じです。
コード速度を 100 ミリ秒未満のレベルに戻すにはどうすればよいですか? どういうわけかキャッシュの利点を得ることができていませんか? その単一の機能バンク ファイルを別の部分に分割する必要がありますか? 応答時間を台無しにするために私ができる他の微妙なことはありますか?
または、それ以外に、どの PHP 操作がスピード バンプにぶつかっているのかをさらに掘り下げるツールは何ですか?
==========================
【追記】解決しました。
==========================
多くの親切な人々が指摘しているように、1800 行の php 関数ライブラリを使用するだけで速度が低下する論理的な理由はありません。実際に起こっていたのは、長い API 呼び出し関数の 1 つを呼び出すデバッグ行があったことです。PHP ファイルをインクルードするときはいつでも、リモートのクエリ データからデータ構造全体を構築していました。
その行を削除すると、すべてが 30 ミリ秒の素早い応答に戻りました。私にとって奇妙なのは、AJAX スクリプトが呼び出されるたびに require_once() が php ファイルを開くことです。しかし、それは私が体調を崩していて、AJAXスクリプトが終了するたびに閉じて、毎回再度開いて再コンパイルしていることを忘れている.
php - インクルード、必須、require_once
今日、オブジェクトを返すファイルをインクルードしようとしました。私は常にrequire_onceを使用していますが、今では奇妙な動作に気付きました。
ファイル main.php
ファイル index.php
結果
なぜそうなのですか?私はrequireとrequire_onceは同じものだと思っていました.require_onceだけは重複しないので安全です。
ありがとう。
編集:
しかし、require_onceだけを使用すると、bool(true) も取得されます。つまり、require_once はコンテンツではなく、インクルードの結果のみを返しますか?
編集2:
笑。以前、このコードの実行前に作成されたクラス内でこのファイルを必要としていたことに気づきませんでした ($this->file = require_once("langs/$name/main.php");)
そのため、require_once は正常に機能しました。みんなありがとう!
php - ヘッダーの場所の代わりにrequire_onceを使用する必要がありますか?
私はこのようなものを持っています:(このページでユーザーをログに記録する必要がある場合)
そしてloginFrm.phpでは、次のことを行います。
このページでは、代わりに次のようなものを使用する必要があると言われています。
これは私には機能しません。セッション変数には、現在のページではなく、含まれているページが含まれるようになりました。
についてどう思いますか?