phpファイルをrequire_onceで読み込み展開する場合、頻繁に(MAX1分毎に)呼び出し時間がかかりそうな関数と、アクセス数が少なくすぐ終わりそうな関数と、同じファイルに書いても問題ないですか?
というのは、時間がかかる関数はバッチメインで処理しますが、ユーザーアクセスからも結構使用します。
バッチが占領している間、ユーザーが待たせられるということは無いのですか?
以前、同じ処理を複数書くのはカッコ悪いと聞いたことがあるので、世の中の人たちはどのようにしているのか?また、何ら問題ないのか?教えていただければ幸いです。
また、マニュアルを読んでもrequireとincludeの違いがイマイチわかりません。
文面上は理解できるのですが、そのあとそれがどういう影響でどういうところに問題が生じるのか?解らずにrequire_onceを使い続けています。
この辺も関係あるならば合わせて教えてください。
よろしくお願いします m(_ _)m
同じファイルに何を書くかは作者が決めていいのですが何を基準に考慮するかは人それぞれだと思います。
私の場合は使用損度や機能で分けています。よく使うもの、たまにしか使わないもの、エラー対応、mail送信など。
ある程度自分のポリシーが無いと後になってこの関数はどのファイルに入っていたっけ。ということになりかねません。
時間がかかりそうな関数heavy()と、すぐ終わりそうな関数light()とに関連性がなかったら私なら二つのファイル
foo.php, bar.phpに分けます。
バッチメイン.php
require_once 'foo.php'; // heavy()を使う
ユーザーアクセス.php
require_once 'foo.php'; // heavy()を使う
require_once 'bar.php'; // light()を使う
>マニュアルを読んでもrequireとincludeの違いがイマイチわかりません。
マニュアルによればファイルが無かった場合の対処方法の違いのようなので
私なら想定外の事が起こったのなら被害を拡大させないためにそこで停止してもらったほうがいいのでrequire、require_onceを使います。
自分で対処がしたいのならinclude、include_onceでコントロールをもらい後始末などをすることになるでしょう。
pluginのように前もってファイルの存在が解らないけどファイルがあればそれをincludeすることで新しい機能が使えるようにもできます。
requireにはこのような機転はききませんが要は違いを自分はどう利用するかということかと。
perlではよく
open(DATAFILE, "< data.txt") or die("Error");
というのを見かけます。ファイルをopenしてエラーだったらdie()するというもので、requireに似ています。
die()の付かないopen()がincludeという感じですか。そのためエラーが無かったかの確認が必要なのですが。
includeもrequireと同じように使っているのをよく目にします。つまりincludeのエラーに対して想定していないのです。
そのためincludeの方が危険だとは思います。(ファイルは存在しても検索パスの間違い)
requireでなければならない意外はrequire_onceでいいように思います。
>バッチが占領している間、ユーザーが待たせられるということは無いのですか?
状況がイマイチ飲み込めないorz。