PHP:持久变量值

Ant*_*nio 3 php static

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

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

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

hek*_*mgl 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));
}
Run Code Online (Sandbox Code Playgroud)

使用PHP的serialize()尝试特别实用

  • 您处于仅限PHP的环境中
  • $result 是一个复杂的数据类型,但您不想创建数据库结构并映射$ result

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

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

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