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

问题描述 投票:0回答:4

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

php memcached shared-memory
4个回答
14
投票

APC

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

编辑您确定APC安装正确吗? 您是否在 php.ini 中添加了

extension=apc.so
?并重新启动apache(我假设你在带有apache2的lamp服务器上)?您对 APC
phpinfo();
有什么看法?

这是一个非常适合我的简单测试:

<?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。


8
投票

您始终可以使用内存数据库来保存数据。不过,可能有点矫枉过正了。


4
投票

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

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

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

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


3
投票

/dev/shm
中创建一个文件,它将保留在内存中,直到机器重新启动。这可能会或可能不会比使用任何旧文件更快,具体取决于您的使用模式。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.