PHP:持久变量值

时间:2012-12-28 19:54:39

标签: php static

我必须读取文件并进行一些计算,而不是将此计算的结果保存在变量中。

我只需要这样做一次。在Java + Servlet中,我可以使用servlet容器,例如单例模式。

我知道在PHP中我不能这样做。这是更好的方法吗?将计算(或传输数据)保存在DB?

1 个答案:

答案 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()尝试尤为实用
  • 您位于仅限PHP的环境中
  • $result是一个复杂的数据类型,但您不想创建数据库结构并映射$ result它

如果您不在仅限PHP的环境中,您可能更喜欢其他序列化格式,如JSON或XML。

此外,序列化结果可以作为字符串存储在数据库中而不是文件中。将其保存到数据库而不是文件会使应用程序更具可伸缩性,因为访问同一数据库(集群)的所有服务器都可以使用该结果。

简而言之:我建议使用可能与序列化相结合的数据库。