任何关于我在运行PHP的web服务器中缓冲数据的建议


Any suggestion for me to buffer data in my web server which runs in PHP?

我考虑了很长时间

我想我不能使用所有需要在远程Linux服务器上安装的API/PHP扩展(例如memcache、APC、Xcache),因为我的web主机服务器是一个共享服务器,我只能将文件/脚本放在httpdocs文件夹中。

有什么建议可以让我以编程方式使用缓存和访问内存吗?

实际上,我的目标是找到一个保存一些数据的"地方",它可以以比进入数据库获取数据更快的速度访问,并减少对数据库的加载。这意味着,如果有人能给出任何其他有效的建议,就不必使用记忆。例如,使用文本文件是个好选择吗?(实际上我只是猜测)

我的PHP版本是5.2.17。我使用的是MySQL数据库。

希望有人能给我建议

平面文件将始终是最容易缓存的方式,但它将比直接从内存访问数据慢。您可以使用存储在内存中的MySQL表。您需要将表使用的引擎更改为内存。请注意,只有当您的数据库与web服务器位于同一服务器上时,此操作才会起作用。

在内存中设置一个包含两列键和值的表。变量名称将是一个键,其内容是值。如果您需要缓存数组,对象会在存储数据之前序列化数据。

如果需要限制内存表的大小,请再添加一列hitCount。对于每次读取,将计数增加一。插入新行时,检查最大行数,如果达到限制,则删除hitCount最低的行。

要检查哪个更快(文件缓存或内存缓存),请使用以下代码

<?php 
function getTime() 
{ 
    $a = explode (' ',microtime()); 
    return(double) $a[0] + $a[1]; 
} 
?>
<?php 
    $Start = getTime();
    //Data fetching tasks comes here
    $end = getTime(); 
    echo "time taken = ".number_format(($End - $Start),2)."seconds";
?>

如果可能的话,让我们知道它的效率有多高…谢谢

如果数据库查询成本高昂,您可以很容易地将平面文本文件用作缓存。就像将memcache与键/值系统一起使用一样,可以将文件名用作键,将文件的上下文用作值。

下面是一个将单个页面的输出缓存在文件中的示例;您可以根据自己的需要进行调整:http://www.snipe.net/2009/03/quick-and-dirty-php-caching/

平面文件是在共享服务器上缓存业务逻辑、查询等的最简单方法。

要缓存任何DB请求,最好的办法是获取结果,序列化它们,并将它们存储在一个可能有到期日期的文件中(如果需要)。当您需要再次获取这些结果时,只需拉入文件并取消对以前序列化的数据的序列化。

此外,如果数据是基于用户的cookie,那么只要用户至少停留在应用程序上,会话也会工作。如果你提取了很多数据,最好还是选择第一个选项,只根据用户/会话id保存文件。

取决于要cahce的数据大小。基于服务器环境的限制:

  • 使用平面文件(或sqlitedb)缓存大型数据集的数据(例如,用户首选项,用户活动日志。)

  • 使用共享内存缓存较小数据集的数据(例如,系统计数器、系统状态。)

希望这能有所帮助。