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

问题描述 投票:0回答:1

我在PHP应用程序中有一个网页,它访问专有格式数据文件,解析它,并根据用户输入生成结果。它完美无缺。

但是,数据文件现在变得越来越大,并且需要更长的时间来解析。用户请求也在增加。

在它完全失控之前,我想要一点点地优化应用程序而不用花太长时间去做。

此时,数据文件在类中解析,该类知道该文件的所有内容。

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

对我进行优化的最快方法是每小时在cron事件上加载和解析文件,并将该数据保存在网页加载速度更快的地方,这意味着每小时解析一次文件而不是每次请求。

这样做的最佳方式是什么?

我立即想到了“数据库”,但这似乎是很多工作试图存储所有数据,并且任何数据都可以在文件中发生变化,因此我不得不每小时丢弃表格而不是尝试比较数据。重新填充,Web应用程序可能会向用户返回不正确的数据。

那么我认为有可能把一个类,保存到磁盘,并且Web应用程序在需要时将这些数据重新加载到内存中?意思是对应用程序的修改很少(以及在cron上运行的小脚本)。

php data-access
1个回答
1
投票

您可以序列化该类,但这不是真正推荐的。

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

例:

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秒的数据,当它为空时,它将从磁盘加载它。

© www.soinside.com 2019 - 2024. All rights reserved.