[解決済み] なぜrequire_onceは使い勝手が悪いのか?
2022-05-07 02:40:31
質問
よりよい PHP のコーディング方法について書かれた本を読むと、 そのすべてが
require_once
というのは、速度のためです。
これはなぜでしょうか?
と同じことをするのに適切な/より良い方法は何でしょうか?
require_once
? 重要であれば、私はPHP 5を使用しています。
解決方法は?
require_once
と
include_once
はどちらも、すでに含まれているもの/要求されているもののログをシステムが保持することを要求しています。すべての
*_once
の呼び出しは、そのログをチェックすることを意味します。だから、間違いなく
いくつか
しかし、アプリ全体の速度を低下させるほどのものなのでしょうか?
... 本当にそうでしょうか... あなたが 本当に 古いハードか、あるいは ロット .
もし、あなたが
は
何千もの
*_once
は、自分で作業を軽くすることができます。単純なアプリの場合は、一度だけ入れたことを確認するだけでいいのです
べき
しかし、それでも再定義エラーが発生する場合は、次のような方法があります。
if (!defined('MyIncludeName')) {
require('MyIncludeName');
define('MyIncludeName', 1);
}
個人的には
*_once
ステートメントを使用していますが、愚かな100万パスベンチマークでは、この2つの違いを見ることができます。
php hhvm
if defined 0.18587779998779 0.046600103378296
require_once 1.2219581604004 3.2908599376678
で10-100倍遅くなる。
require_once
というのが気になるし
require_once
の方が一見遅く感じます。
hhvm
. 繰り返しになりますが、これは
*_once
を何千回と繰り返す。
<?php // test.php
$LIMIT = 1000000;
$start = microtime(true);
for ($i=0; $i<$LIMIT; $i++)
if (!defined('include.php')) {
require('include.php');
define('include.php', 1);
}
$mid = microtime(true);
for ($i=0; $i<$LIMIT; $i++)
require_once('include.php');
$end = microtime(true);
printf("if defined\t%s\nrequire_once\t%s\n", $mid-$start, $end-$mid);
<?php // include.php
// do nothing.
関連
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] require, include, require_once, include_onceの違い?
-
[解決済み] Long-Polling、Websocket、Server-Sent Events (SSE)、Cometとは何ですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み】straceはどのように使うべきですか?