在 PHP 中保存和恢复 class 作为优化技术?

Saving and restoring a class in PHP as an optimisation technique?

我在 PHP 应用程序中有一个网页可以访问专有格式的数据文件,对其进行解析,并根据用户输入生成结果。它工作完美。

但是,现在数据文件越来越大,解析时间也越来越长。用户需求也在增加。

在一切失控之前,我想稍微优化一下应用程序,但不要花太长时间。

目前,数据文件在 class 中解析,class 知道文件的所有信息。

输出只需要精确到数据文件的4小时以内。

对我来说,优化它的最快方法是每小时在 cron 事件中加载和解析文件,并将该数据保存在网页加载速度更快的地方,这意味着每小时解析一次文件在每一个要求。

最好的方法是什么?

我立刻想到 "database",但是尝试存储所有数据似乎需要做很多工作,而且文件中的任何数据都可能发生变化,所以与其尝试比较数据,我还不如尝试比较数据每小时删除 table 并重新填充,网络应用程序可能会 return 向用户提供不正确的数据。

然后我想是否可以获取 class,将其保存到磁盘,然后网络应用程序在需要时将该数据重新加载到内存中?这意味着对应用程序的修改很少(以及 cron 上的一个小脚本 运行)。

您可以序列化 class,但不推荐这样做。

当您使用 php 并且只对结果集感兴趣时,最简单的方法是使用 uapc 存储数据,它只是 key/value 存储在内存中。

示例:

function GetData() {
    $cached = apc_fetch('myParsedData');
    if(!empty($cached)) {
        return $cached;
    }
    $data = file_get_contents(...);
    $result = Parse($data);
    apc_store('myParsedData', $result, 3600);
    return $result;
}

function Parse($data) {
    //do something
    return $result;
}

这将存储数据 3600 秒,当数据为空时,它将从磁盘加载。