我必須讀取文件並進行一些計算,而不是將此計算的結果保存在變量中。PHP:持久變量值
我只需要做一次。在Java + Servlet中,我可以使用servlet容器和單例模式來完成此操作。
我知道在PHP中我不能這樣做。哪種方法是更好的方法?在數據庫上保存計算(或傳輸數據)?
我必須讀取文件並進行一些計算,而不是將此計算的結果保存在變量中。PHP:持久變量值
我只需要做一次。在Java + Servlet中,我可以使用servlet容器和單例模式來完成此操作。
我知道在PHP中我不能這樣做。哪種方法是更好的方法?在數據庫上保存計算(或傳輸數據)?
不,它不會像Java Servlets一樣工作。你必須找到解決方法。
首先,我假設一般情況下使用$ _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));
}
使用時
serialize()
嘗試是特別可行$result
是一個複雜的數據類型,但您不想創建數據庫結構並映射$結果太如果您不在PHP專用環境中,您可能更喜歡其他序列化格式,如JSON或XML。
另外,序列化結果可以作爲字符串存儲在數據庫中而不是文件中。將它保存到數據庫而不是文件會使應用程序更具可伸縮性,因爲結果可供所有訪問相同數據庫(集羣)的服務器使用。
總之:我會建議使用數據庫可能與序列化結合。
[apc_cache](http://php.net/manual/en/function.apc-add.php)如果你已經安裝了 – Sawny
爲什麼你不能在PHP中做單身? –
@JaredFarrish因爲變量不會在多個請求之間持續 – Antonio