【问题标题】:How do I save data in an application scope in PHP?如何在 PHP 的应用程序范围内保存数据?
【发布时间】:2011-04-12 09:58:14
【问题描述】:

我是一名 Java 和 C# 开发人员,而且我承认我的 PHP 不是那么好。

我需要在应用程序范围内存储一个对象,只要应用程序本身正在运行,该对象就会存在。我无法将它保存在 Session 中,因为它已过期,我也无法将其序列化到磁盘。

PHP 中是否有类似 C# Application 对象的东西?

【问题讨论】:

  • 请注意,与 Java(可能在 C# 中)不同,PHP 代码并不存在于页面请求之外。您将不得不手动存储它并在每个页面的某个地方检索它 - 但是,这很容易放入您的框架中,以使其“始终可用”。

标签: php scope save


【解决方案1】:

2018 年编辑:时间对 APC 很友好,特别是因为 PHP 7 包含对 Zend Optimizer+ 的捆绑支持,它在很大程度上做同样的事情(除了关键-店铺)。这些天来,密钥存储方面已被分叉到the APCu project

但是,在 2018 年,首选的密钥库是 Redis。详情请见ext-redis project


PHP 有各种各样的应用范围。它被称为APC (Alternative PHP Cache)

如果满足以下条件,则应将数据缓存在 APC 中:

  1. 它不是特定于用户会话的(如果是,请放入 $_SESSION[])
  2. 不是很长期(如果是,请使用文件系统)
  3. 仅在一台 PHP 服务器上需要(如果不需要,请考虑使用memcached
  4. 您希望它可以立即用于您网站的每个页面,甚至可以用于其他(非关联)PHP 程序。
  5. 您不介意存储在其中的所有数据在 Apache 重新加载/重新启动时都会丢失。
  6. 您希望数据访问速度远快于基于文件、memcached 或(尤其是)基于数据库的数据。

APC 已经安装在很多主机上,但请按照上述指南安装在您的主机上。然后你做这样的事情:

if (apc_exists('app:app_level_data') !== false)
{
    $data = apc_fetch('app:app_level_data');
}
else
{
    $data = getFromDB('foo');
    apc_store('app:app_level_data', $data);
}

【讨论】:

  • @daVe,但事实并非如此。现在是:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 2015-12-13
相关资源
最近更新 更多