【问题标题】:How can I store data in RAM memory using PHP?如何使用 PHP 将数据存储在 RAM 内存中?
【发布时间】:2011-05-04 14:42:29
【问题描述】:

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

【问题讨论】:

标签: php memcached shared-memory


【解决方案1】:

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。

【讨论】:

  • 他无法安装memcached,所以他可能也无法安装APC
  • 是的,但许多主机允许使用 APC(有一些限制) - 我们需要问他。
【解决方案2】:

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

【讨论】:

  • 我很惊讶没有人提高你的答案。我已经成功使用了 mysql 内存表,而且速度非常快。 RDB 对于会话来说可能是多余的,但是当您无权访问 memcached 或 /dev/ 时,它是一个不错的选择
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 他好像在共享服务器上
    • @Pekka 好吧,那他就完蛋了……希望他的文件能被操作系统缓存。
    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多