问题标签 [opcache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
332 浏览

php - PHP 5.5 的 APC 的长期替代方案是什么?

我有一个场景,每次请求我都必须从数据库中获取数据。所以我想到了APC用来缓存变量。但后来发现这APC不再是较新版本的 PHP 的选择。所以我检查了memcahcedAPCu。Memcached 不是根据这个选择的。而且我不确定APCu开发人员社区会支持多长时间,因为我不想在代码部署后更改它。

Opcache是替换的APC,但它没有提供任何缓存变量的方法。我很困惑。一点帮助将不胜感激。

提前致谢。

0 投票
2 回答
75843 浏览

php - 如何确定是否启用了 PHP OPcache?

我正在尝试在我的服务器上启用 opCache(ubuntu 12.04 LTS运行apache 2.4.7PHP Version 5.5.10-1+deb.sury.org~precise+1)。

在开始做任何事情之前,我阅读了这篇高度相关的帖子,它告诉我 opCache 在默认情况下是禁用的,我必须手动启用它。

我进入 php.ini 发现没有带有 的文本opcache.so,并且与 opcache 相关的所有内容都被注释掉了。像这样:

这没关系,因为该人告诉它已禁用。但是当我咨询时phpinfo();,它向我显示了以下内容(根据我的理解,它告诉我 opCache 已被使用)。

在此处输入图像描述

那么我的 opcache 是否已启用和使用,我如何查看/验证它?

0 投票
1 回答
10841 浏览

apache - 加载 opcache.so 失败:opcache.so:无法打开共享对象文件

我的 apache2 日志文件中存在 Opcache 问题

错误是:加载 opcache.so 失败:opcache.so:无法打开共享对象文件

你有什么想法 ?

我正在使用 Opcache 在 Debian Squeeze php 5.4 上运行

谢谢

0 投票
0 回答
639 浏览

php - opCache 是否命中了脚本?

是否可以从 PHP 内部判断脚本是否被 opCache 命中。

我知道我可以从phpinfo()大约

  • 缓存命中
  • 缓存未命中
  • 缓存脚本
  • 缓存键

问题是这只是统计数据。我想要的是执行以下操作。当我test.php从脚本内部运行一些脚本时,它会告诉我它是被 opCache 命中还是错过了。有可能这样做吗?

0 投票
1 回答
2191 浏览

php - 使用 opcache 在 PHP 中缓存静态数据

我有大约 100 个字符串变量需要在 PHP 站点的每个网页上可用。数据在运行时永远不会改变,但将来我需要多组数据并在用于页面请求的一组数据之间切换。字符串的长度从 5 到 600 个字符不等。我目前包含一个具有如下数据的文件:

我正在使用 opcache。这种方法将从 opcache 中受益多少?

我看过这个答案。如果缓存的好处值得进行密钥查找,我可以改为使用关联数组。但是,我不清楚使用带有静态数组字段的类是否比声明变量更适合我的情况。

也许带有静态变量的函数是个好主意?这与静态类字段相同、更好还是更差?

也许一个函数而不是每个字符串的变量?如果不是所有字符串都用于给定页面(通常是这种情况),这会更好吗?

什么是最好的解决方案?每个页面都需要数据,所以我希望尽可能高效,避免从磁盘/数据库等读取。

0 投票
3 回答
658 浏览

php - php5.5.11 中的 opcache_is_script_cached 函数

最近我问了一个问题“有没有办法找到脚本是否被 opCache 命中”并且无法找到答案。现在查看Php5.5.11更新日志,我发现新功能

OPCache:

添加了函数 opcache_is_script_cached()。

加入。根据名称,它完全符合我的要求,但问题是我找不到有关此功能的任何文档

谁能告诉我这个功能到底是做什么的?请不要胡乱猜测。

0 投票
0 回答
315 浏览

php - 在 AWS EB PHP 服务器上安装 Opcache 后出现无效的 UTF8 字符

我正在使用 CakePHP 2.4.2 在带有 RDS 数据库的 Amazon Elastic Beanstalk 服务器上运行 CMS 站点。从昨晚开始,我在日志中看到错误,并且某些页面因此无法加载(500 错误):

我有时会看到相同的“utf8”字符集,但错误日志中有一堆不同的字符串,所以每次都是相同的错误,但不是相同的错误字符串。以下是我的日志中的其他一些字符串:

昨晚下班之前,我推出了一个 ebextension 配置,以将 Zend Opcode Caching 安装到服务器。我没有证据表明这是错误的根源,但似乎我对服务器所做的唯一更改可能会导致错误 - 并且是在它们开始出现之前所做的最后一次更改。我在下午 5 点左右推送代码,并在下午 6 点左右开始在日志中看到错误。

为了更好地衡量,这是我用来启用 opcache 的配置:

我有几台服务器在生产中,没有 opcache 包,相同的设置运行良好,我也无法在我的本地测试盒上重现此类错误。

我是否可以在 opcache 中发现某种晦涩的错误,或者对于我所看到的内容是否有更合乎逻辑的结论?由于这些错误发生在我的代码深处,我什至不知道如何去调试它。我已经搜索了我的代码,以确保代码本身没有坏字符,但除此之外,我有点在黑暗中闲逛。

更新:

我调查了这是否是由 UTF8 字符串上的错误 strtolower() 转换引起的,但其中一个查询不包含用户输入的值,并且没有任何条件使用 UTF8 字符串,所以我不相信它可以被追踪到。失败的查询之一是查找我的登录控制器中可用的所有区域:

0 投票
3 回答
22136 浏览

php - APC -> APCu / OPCache,性能差

我有一个今天m3.xlarge更新到的 EC2 实例PHP 5.5.11

在此更新中,它php55-pecl-apcphp55-pecl-apcu.

经过阅读和实验,我的理解是APC已经被替换为OPCache,除了一个键值存储可以用APCu.

在将我的配置调整为看起来合理的东西之后,在登录时使用 Wordpress 现在非常慢,至少差了 300-900 毫秒(前端通过清漆缓存,并且工作完美......但是当你使用管理员时故意不缓存,并且慢如罪过)。

我在升级时做了一系列基准测试,每个步骤的样本量都很小。随着我的继续,它越来越恶化。

  • APC(升级前)-->
  • OPCache + 无 APCu-->
  • OPCache + APCu + APCu 的 WP 插件

现在我只是和 OPCache 一起玩,没有 APCu。

  1. 我怎样才能达到相同的性能?我喜欢管理界面,我喜欢它的速度。老实说,我根本看不出这是一个改进,这真的很令人沮丧......除非那里有一些我不知道的超级图书馆。这当然不是我所拥有的,或者它可能没有配置好。
  2. 假设#1 的答案是“你把它配置成球”,那么你介意看看这个,看看这是否合理吗?

对于我的设置,我使用的是最新的 wordpress,一些大型插件,但我无法将它们删除,因为它们很重要。幸运的是,清漆负责大部分工作。我的网站根目录中有 4 个内核、16GB 内存、~10k 个文件。除了 wordpress,我也没有真正的核心应用程序或其他任何东西,这是一个相当普通的设置。我认为这就是可能有帮助的东西。

配置:

0 投票
0 回答
615 浏览

php - PHP5.5 Opcache 每个文件夹缓存

我将一台网络服务器切换到 PHP 5.5,默认情况下它带有 Zend Opcache。发现它非常适合 APC 的配置。我需要以某种方式定义 Opcache 中的问题以仅缓存特定文件夹中的文件。在 php.net 中找到

opcache.blacklist_filename 字符串

加速,每行一个。允许使用通配符,也可以提供前缀。以分号开头的行作为注释被忽略。

但是我有 150 个文件夹,例如网站,我该如何定义只缓存特定文件夹?至于我现在的观点,我假设我可以通过将不需要的文件夹列表放入黑名单文件来防止缓存:

0 投票
1 回答
1626 浏览

php - Zend OPcache 的“num_cached_keys”统计是什么意思?

返回的数据点包括opcache_get_status()

缓存脚本的数量是正确且可以理解的(可以通过计算'scripts'返回值的部分来确认)。但是“钥匙”到底指的是什么?我假设 Zend OPcache 可以组织为键/值存储。在这种情况下,脚本和键之间应该存在一对一的关系,除非......

  • OPcache 还存储脚本以外的内容,或者
  • 一些脚本使用 2 个或更多键存储

我没有看到列出 OPcache 使用的密钥的 API。