有没有办法使用PHP将小数据存储在RAM内存中,这样我就可以访问不同会话之间的数据而不是重新生成它。类似于memcached的东西(我无法访问memcahced)。我目前的解决方案只是将数据保存在文件中。
答案 0 :(得分:12)
APC?
它与memcached不同;在memcached中,您可以访问各种语言(c,python等)的数据,而APC仅适用于PHP。
编辑您确定APC安装正确吗?
你在php.ini中添加了extension=apc.so
吗?并重新启动apache(我假设你在使用apache2的灯服务器上)?您phpinfo();
对APC有什么看法?
这是一个完全适合我的简单测试:
<?php
/*
* page.php
* Store the variable for 30 seconds,
* see http://it.php.net/manual/en/function.apc-add.php
* */
if(apc_add('foo', 'bar', 30)){
header('Location: page2.php');
}else{
die("Cant add foo to apc!");
}
<?php
/*
* page2.php
* */
echo 'foo is been set as: ' . apc_fetch('foo');
p.s:我更喜欢使用apc_add
而不是apc_store
,但它们之间的唯一区别是apc_add不会覆盖变量,但如果使用相同的密钥调用两次则会失败:
使用此名称存储变量。密钥是缓存唯一的,因此尝试使用apc_add()来存储具有已存在密钥的数据将不会覆盖现有数据,而是返回FALSE。 (这是apc_add()和apc_store()之间的唯一区别。)
这是脚本的品味/任务问题,但上面的示例也适用于apc_store。
答案 1 :(得分:5)
您始终可以使用内存中的数据库来保存数据。但可能有点矫枉过正。
答案 2 :(得分:4)
我假设您在某种共享服务器上。
memcached
或其他缓存解决方案确实是实现此目的的唯一方法。
Sessions是跨PHP页面持久保存数据的最重要方法,它基于文件工作。您可以将会话处理程序更改为基于数据库,但这也不是基于RAM的。
据我所知,无需在根级别更改系统(例如,安装memcached或将会话文件存储在RAM磁盘上),这是不可能的。
答案 3 :(得分:3)
在/dev/shm
中创建一个文件,它将保留在内存中,直到机器重新启动。这可能会或可能不会比使用任何旧文件更快,具体取决于您的使用模式。