この計算の結果を変数内に保存するよりも、ファイルを読み取って計算を行う必要があります。
私はこれを一度だけ行う必要があります。Java +サーブレットでは、サーブレットコンテナと、たとえばシングルトンパターンを使用してこれを行うことができます。
PHPではこのように振る舞うことができないことを私は知っています。これを行うためのより良い方法はどれですか?計算をDBに保存(またはデータを転送)しますか?
いいえ、Java サーブレットのようには機能しません。回避策を見つける必要があります。
まず、「ユーザー セッション」ごとではなく、サーバーごと (またはアプリケーションごと) に状態を保存する必要があるため、一般的に $_SESSION、$_COOKIE、または $_REQUEST を使用することは実用的ではないと思います。
あなたの場合、データベースを使用することは実用的です。通常のアプリケーション設計では、これが最も一般的なソリューションになります。
また、PHP のシリアル化機能を使用して、次のようなこともできます。
<?php
$resultfile = 'result.dat';
if(!file_exists($resultfile)) {
$result = compute_result('foo bar');
file_put_contents($resultfile, serialize($result));
} else {
$result = unserialize(file_get_contents($resultfile));
}
PHP のserialize()
試行を使用することは、次の場合に特に実用的です。
$result
は複雑なデータ型ですが、データベース構造を作成して $result もマップしたくありませんPHP のみの環境でない場合は、JSON または XML などの他のシリアライゼーション形式を好むかもしれません。
また、シリアル化の結果は、ファイルではなくデータベースに文字列として格納できます。ファイルではなくデータベースに保存すると、同じデータベース (クラスター) にアクセスするすべてのサーバーで結果を利用できるため、アプリケーションのスケーラビリティが向上します。
要するに、シリアライゼーションと組み合わせてデータベースを使用することをお勧めします。