我必须读取一个文件并进行一些计算,而不是将这个计算的结果保存在一个变量中。
我只需要这样做一次。在 Java + Servlet 中,我可以使用 servlet 容器来做到这一点,例如,单例模式。
我知道在 PHP 中我不能这样做。哪种方法更好?在数据库中保存计算(或传输数据)?
不,它不会像 Java Servlet 那样工作。您必须找到解决方法。
首先,我假设使用 $_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 等其他序列化格式。
此外,序列化结果可以作为字符串存储在数据库中而不是文件中。将其保存到数据库而不是文件将使应用程序更具可扩展性,因为结果将可用于访问同一数据库(集群)的所有服务器。
简而言之:我建议将数据库与序列化结合使用。