Php 将mysql查询的结果手动缓存到txt文件

Php 将mysql查询的结果手动缓存到txt文件,php,mysql,caching,Php,Mysql,Caching,有没有办法将mysql查询的结果手动缓存到txt文件中 例: 原始查询包含更多使用多个表的where和join。 那么,这可能吗?如果是,请解释 谢谢,, pnm123如果您确定您的数据有很长的生存时间,您当然可以通过将数据临时保存到文本文件来缓存数据 if (!file_exists($cachefile)) { // Save to cache $query=mysql_query('SELECT * FROM ...'); while ($row=mysql_fet

有没有办法将mysql查询的结果手动缓存到txt文件中

例:

原始查询包含更多使用多个表的where和join。 那么,这可能吗?如果是,请解释

谢谢,,
pnm123

如果您确定您的数据有很长的生存时间,您当然可以通过将数据临时保存到文本文件来缓存数据

if (!file_exists($cachefile)) {
    // Save to cache
    $query=mysql_query('SELECT * FROM ...');
    while ($row=mysql_fetch_array($query))
        $result[]=$row;
    file_put_contents($cachefile,serialize($result),LOCK_EX);
}
else
    // Retrieve from cache
    $result=unserialize(file_get_contents($cachefile));
foreach ($result as $row)
    echo $row['name'];

使用APC、MeMax或XCax将是一个更好的选择,如果你考虑性能。

除非你的实际查询很有参与性,而且索引不好,否则我认为你的缓存会慢一些。请记住,在最坏的情况下,mySQL也会从文件系统中获取结果。所以我认为缓存查询结果会快得多,因为MySQL只需运行一次,因为查询没有变化。MySQL有自己的查询缓存。处理查询是Mysql的工作。过早优化是万恶之源。但有时我们可以做得比现在更好。如果有两行或更多行/结果呢?while($row=mysql\u feth\u array($result)){我需要用什么来代替呢?然后,用
serialize($row)
,而不是
serialize($result)
抱歉。我仍然没有从缓存中检索的方法。顺便说一下,我已经编辑了这个问题。那么,我如何通过从缓存中检索数据来打印多个结果呢?就像while(){echo;}
if (!file_exists($cachefile)) {
    // Save to cache
    $query=mysql_query('SELECT * FROM ...');
    while ($row=mysql_fetch_array($query))
        $result[]=$row;
    file_put_contents($cachefile,serialize($result),LOCK_EX);
}
else
    // Retrieve from cache
    $result=unserialize(file_get_contents($cachefile));
foreach ($result as $row)
    echo $row['name'];