我必须读取文件并进行一些计算,而不是将此计算的结果保存在变量中。
我只需要这样做一次。在Java + Servlet中,我可以使用servlet容器,例如单例模式。
我知道在PHP中我不能这样做。这是更好的方法吗?将计算(或传输数据)保存在DB?
答案 0 :(得分:9)
不,它不会像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));
}
时,使用PHP的
serialize()
尝试尤为实用
$result
是一个复杂的数据类型,但您不想创建数据库结构并映射$ result它如果您不在仅限PHP的环境中,您可能更喜欢其他序列化格式,如JSON或XML。
此外,序列化结果可以作为字符串存储在数据库中而不是文件中。将其保存到数据库而不是文件会使应用程序更具可伸缩性,因为访问同一数据库(集群)的所有服务器都可以使用该结果。
简而言之:我建议使用可能与序列化相结合的数据库。