0

私はこれについて答えを探していましたが、これまで答えを見つけることができませんでした。私の質問は; 動的入力を必要としない巨大なグローバル クラスを格納する最良の方法は何ですか。一度だけ使用する必要があります。

テンプレートクラスの例を見てみましょう:

<?php
class Design_API{
   function loadfile($file){
     //load file here
   }

   // do file manipulation here

   function presentfile(){
      echo($this->file);
   }

}
?>

このクラスをレイアウトの基本的な例として利用します。それを使用するためのパフォーマンスとセキュリティに関する最良の方法は何でしょうか。そのインスタンスをグローバルとして作成することでしょうか。インスタンスをセッションに保存します。または単に静的クラスにします。

また、2 つのクライアントがまったく同じミリ秒でサイトにアクセスする場合にセッションを使用したとします。php はセッション ファイルをロックし、クライアント 2 の Web ロードに時間がかかりますか?

4

2 に答える 2

3

この質問は、一貫した方法で答えるには少し混同されすぎているため、いくつかのポイントを次に示します。

  • 共有リソースにアクセスしていない限り、あるクライアントは別のクライアントをブロックしません
  • セッションは異なるユーザー間で共有されるリソースではありません。この誤解は忘れてください
  • オブジェクトをどこに格納しても、パフォーマンスはほとんど変わりません
  • リクエスト間でリソースが共有されないため、異なるリクエストとユーザーの間の違いはさらに小さくなります
  • 最初に意味することと最も保守しやすいことをコーディングし、後で遅いことが証明されたときにパフォーマンスのためにこれを最適化します(そうではない可能性があります)
  • 可能な限りグローバルを避ける
  • コードなど、セッションに属さないものをセッションに保存しないでください
  • staticクラスをできるだけ避けると、コードの結合が発生します。これは削減する必要があります
  • staticクラスは必ずしも速いとは限りません
于 2012-11-22T14:29:32.543 に答える
2

これを処理する最善の方法は、クラスをシングルトン クラスにし、静的メソッドを使用してそれをインスタンス化することです。

オブジェクトをセッションに保存すると、シリアライズとデシリアライズが必要になり、パフォーマンスが大幅に低下します。また、リソースをクラスに保存すると、シリアル化できなくなります。

于 2012-11-22T14:27:38.543 に答える