[ PHP ] 外部ファイルの読み込みを最適化する ( require_once )

Pocket

PHP においてライブラリなどの外部ファイルの読み込みには、require や require_once 関数などを使用しますが、外部ファイルの読み込みはコストがかかる処理です。ここでは、なるべくコストをかけないように最適化する方法を検討してみたいと思います。

スポンサーリンク

絶対パスで指定する

require 関数などで外部ファイルの読み込みに相対パスを与えた場合と絶対パスを与えた場合では、絶対パスが直接そのファイルを直接オープンするのに対し、相対パス指定では php.ini で指定した include_path やソースコード上で set_include_path 関数で指定したパスからオープンするファイルを検索するため、コストがかかります。なるべく絶対パスで外部ファイルを読み込むように したほうが良いでしょう。

// 相対パスで外部ファイルを指定した場合
require_once 'func.php';

// 絶対パスで外部ファイルを指定した場合
require_once '/usr/local/lib/func.php';

必要となる直前で外部ファイルを読み込む

外部ファイルの読み込みは、下記に示すように必要な場合にファイルの先頭で読み込んで使用することが一般的(?)だと思います。

// 例外クラスが定義されている外部ファイルの読み込み
require_once 'MyException.php';

$flag = true;

if($flag) {
    // 例外をスロー
    throw new MyException();
}

上記サンプルコードではファイルの先頭で外部ファイルを読み込んでいます。これを、以下のように必要な場合に限り読み込むようにすることで、パフォーマンスへの影響を極力抑えることができるようになります。

$flag = true;

if($flag) {

    // 例外クラスが定義されている外部ファイルの読み込み
    require_once 'MyException.php';
    
    // 例外をスロー
    throw new MyException();
}

例外クラスが必要となった場合にのみ外部ファイルを読み込むことで、無駄を省いています。ソースコードの可読性に難があると感じる人もいると思いますが、外部ファイルの読み込みも含め1つのメソッドや関数に集約することで可読性については多少改善できるかもしれません。

塵も積もれば何とやらです

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *