如何使用PHP将数据存储在RAM内存中?

And*_* R. 9 php memcached shared-memory

有没有办法使用PHP将小数据存储在RAM内存中,这样我就可以访问不同会话之间的数据而不是重新生成它.类似于memcached的东西(我无法访问memcahced).我目前的解决方案是将数据保存在文件中.

Str*_*rae 12

APC

它与memcached不同; 在memcached中,您可以访问各种语言(c,python等)的数据,而APC仅适用于PHP.

编辑你确定APC安装正确吗?你有没有添加extension=apc.so你的php.ini?并重新启动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');
Run Code Online (Sandbox Code Playgroud)

PS:我更喜欢使用apc_addapc_store,但它们之间的唯一区别是,apc_add犯规覆盖可变的,但如果使用相同的密钥称为两次将失败:

使用此名称存储变量.密钥是缓存唯一的,因此尝试使用apc_add()来存储具有已存在密钥的数据将不会覆盖现有数据,而是返回FALSE.(这是apc_add()和apc_store()之间的唯一区别.)

这是脚本的品味/任务问题,但上面的例子也适用于apc_store.


Pau*_*ier 6

您始终可以使用内存中的数据库来保存数据.但可能有点矫枉过正.


Pek*_*ica 4

我假设您位于某种共享服务器上。

memcached或其他缓存解决方案确实是做到这一点的唯一方法。

会话是跨 PHP 页面保存数据的最重要方法,它基于文件工作。您可以将会话处理程序更改为基于数据库,但这也不是基于 RAM。

据我所知,如果不更改根级别的系统(例如安装memcached,或将会话文件存储在RAM 磁盘上),这是不可能的。