人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPに関する質問です。

あるHTMLファイルに

<?php require('test.txt');?>

というソースを入れ、外部ファイルを読み込むのですが、require以外に、

require_once()
include()
include_once()

などがありますが、例えば1ページのHTML内に5カ所くらいこのPHPソースを配置するとした場合、
どの命令が一番サーバーに対して負荷が軽いでしょうか?

よろしくご解答、お願い致します。

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML PHP require サーバー ソース
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● GEN111
●20ポイント

include_once や require_once を何回も呼び出しても意味ないと思いますが……

include と require はエラー処理が違うので機能的に望ましい方を使うべき、なのですが、その違いはどうでもよいという場合、

<?php
define ('TIMES', 1000) ;
define ('FILENAME', 'test.txt') ;

ob_start() ;

$start = microtime(true) ;
for ($i = 0; $i < TIMES; ++$i) require FILENAME ;
$time1 = microtime(true) - $start ;

$start = microtime(true) ;
for ($i = 0; $i < TIMES; ++$i) include FILENAME ;
$time2 = microtime(true) - $start ;

ob_end_clean() ;

echo "require : $time1<br />include : $time2" ;
?>

このようなコードで処理にかかる時間を計測してみましたが、ほとんど変わりはないようです。負荷的には違いはないのではないでしょうか。


PHP: include - Manual

◎質問者からの返答

ありがとうございます。

参考にさせて頂きます。

requireが負荷が高いと誰からか聞いたので、、、。

すっきりしました。


2 ● gekikawa
●20ポイント

require()とinclude()は同じ程度ではないでしょうか?

ただrequire_once()とinclude_once()は上記2つよりはるかに処理が重い(負荷がかかる)

ようです。

厳密に調べるにはforループなどでrequireのみ、includeのみ繰り返したら結果が判るかも知れませんが...

require()とinclude()は読込不可能だったときにエラーとして止めたいか、

それとも処理を続けさせたいかの違いで使って良いのでは?

http://jp.php.net/manual/ja/function.include.php

ちなみにrequire_onceなど使うと同じ外部ファイルは1回しか読み込んでくれないはずですよ。

◎質問者からの返答

ありがとうございます。

ソースを書き換えなくてすむようです。


3 ● Mook
●20ポイント

それぞれの関数により挙動が異なるので、最適なものを使うべきかと思いますが、それを把握した上でどれでもよいのであれば、一番処理が早いのはinlude のようです。


http://www.komonet.ne.jp/~php/chap7.htm:title=require文とinclude文]

PHP:include_once と require_once

◎質問者からの返答

ありがとうございます。

あまり、かわらないという意見がありましたので、inludeも含め再検討をした上で、もう一度考えてみます。


4 ● GEN111
●20ポイント

もう少し検証してみましたが、読み込むのがプレーンテキストの場合はほとんど差はないようです。

PHPコードの場合は差がある……ようなのですが、コードの内容など、条件によってどちらが速いとは一概に言えないようで……

ただ、その条件がどの様なものか、試してみた範囲でははっきりとは分かりませんでした。


PHP: require - Manual

◎質問者からの返答

わざわざありがとうございました!

あまり差がないようでしたら、置き換えることはやめておこうと思います。

ありがとうございました!


5 ● tobeoscontinue
●20ポイント

>どの命令が一番サーバーに対して負荷が軽いでしょうか?

Linuxなどの場合、メモリーに余裕があれば一度読み込まれたファイルは残っていると何処かで読んだような。そのため残っていればメモリ転送だけなのでそこまで負荷を考慮する必要は無いように思います。


require_once は重い

という記述もありますが私は確認できませんでした。

またPHP : include_onceとrequire_onceの評価コードではvar_dumpがほとんどの時間を使っていると思いますのでその結果には疑問です。


4.include, requireで読み込むファイルはフルパスにしよう

はうなずけるケースです。相対パスで記述された場合、ファイルを探すのはコストの高い処理だと思います。がフルパスで書くのは現実的ではなくinclude_path()を適切に設定するのがいいのではないでしょうか。あるいはdefine()でフルパスのディレクトリーの部分を定義して連結して使用する。


私の場合は何度も実行するという必要性が無いのでinclude_onceかrequire_onceを使っています。

◎質問者からの返答

ありがとうございます。

今まで作ったサイトは全てrequireで、置き換えてアップするのも一苦労なので、とりあえず大きな差がないようなので、このまま行きたいと思います。

今後はrequire_onceで行きたいと思っています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ