我在 MySQL 数据库中有一些数据大部分时间都是静态的。它们主要是几乎静态的值,如城市、州和种族。我想将它们缓存在一个变量中,最好是在内存中,这样我就不需要在每次页面加载时对 MySQL 执行另一个查询。
问题是,我的主机不支持 memcache 也不支持 APC。我能找到的唯一加速器是 eAccelerator,我认为它不会实现我的想法。
有什么办法可以做缓存吗?它是http://www.k-disk.net
谢谢
我在 MySQL 数据库中有一些数据大部分时间都是静态的。它们主要是几乎静态的值,如城市、州和种族。我想将它们缓存在一个变量中,最好是在内存中,这样我就不需要在每次页面加载时对 MySQL 执行另一个查询。
问题是,我的主机不支持 memcache 也不支持 APC。我能找到的唯一加速器是 eAccelerator,我认为它不会实现我的想法。
有什么办法可以做缓存吗?它是http://www.k-disk.net
谢谢
缓存是编程中无处不在的时空权衡的一个很好的例子。您可以通过使用空间来存储结果来节省时间。[1]
在网站上实现缓存的方法有很多。让我们看看它们从前端开始,然后向后端移动,而不涉及太多细节。
这是“昂贵的查询”数据库对象的缓存。例如:memcache、在文件中缓存页面等。
例如:PHP 加速器、eAccelerator 等。
通过根据需要和机器硬件调整其参数来优化数据库。
在您的情况下,我建议使用 my.cnf 进行调整,因为给定足够的 RAM,MySQL 非常快。尽量不要预先优化。
您可以只将一个文件写入您的服务器,该文件保存一个序列化的 php 变量数组。只需将所有变量插入关联数组,然后序列化并保存。虽然老实说我不明白为什么不将变量保存到数据库中的变量表中。它不是一个昂贵的操作。
$myvars = array(
'how_high_do_i_jump' => 10,
'which_tv_show_is_best' => 'Glee',
'enable_caching' => true,
'mathematical_solution' => 4534.234
);
$file_str = serialize($myvars);
//Save the file
file_put_contents('myvars.ser', $myvars);
//To reverse just do this
$file = file_get_contents('myvars.ser');
$myvars = unserialize($file);
如果这对您不起作用,如果您具有 SSH 访问权限,则可以在共享主机上获取 memcache。我实际上是在hostmonster上做到这一点的。这是一个演练(尽管这不是我最初使用的文章)。
http://andrewpeng.net/posts/2011/06/271273-memcached-and-dreamhost-shared-tutorial.html
您可以使用共享内存扩展。
看看这个基本示例:http ://www.php.net/manual/en/shmop.examples-basic.php
您可以使用 file_put_contents() 和 file_get_contents() 创建自定义缓存类,从磁盘存储和读取数据。