标签: opcache

为什么PHP 5.5的OPcache显示零命中?suPHP的罪魁祸首?

我的(共享)Web主机上启用了PHP 5.5的OPcache扩展,但由于某种原因,它总是在统计信息中报告"0次点击".可能是因为它与suPHP不兼容?

或者任何人有任何其他建议,为什么有0缓存命中?

在此输入图像描述

php suphp opcache

9
推荐指数
2
解决办法
4385
查看次数

可以在没有源代码的情况下分发PHP7 opcached文件吗?

PHP7提供了一个名为opcache的字节码缓存机制.我想知道是否有任何方法可以分发和运行PHP脚本(.bin文件扩展名)的"opcached"版本而不分发其源代码.(我启用了opcache.file_cache指令php.ini以获取.bin文件.)

我假设在执行脚本时,PHP7将检查opcache目录中是否有匹配名称,时间戳的.bin文件,甚至可能比较校验和或哈希值.如果所有内容都匹配,PHP7将执行.bin文件而不是解析.php文件.即使相应的.php脚本不存在,也许有可能"欺骗"PHP执行.bin文件?

php opcache php-7

9
推荐指数
1
解决办法
1035
查看次数

如何调试和记录PHP OPcache问题

我在Windows 10上使用WAMP,在Apache 2.4上运行PHP 7.2

当我打开OPcache时,我加载的页面在Chrome中崩溃并出现以下错误:

ERR_CONNECTION_RESET

我检查了php错误日志和Apache错误日志,但未找到任何报告的错误.我试图禁用Xdebug,仍然是相同的崩溃,并且在日志中没有错误.关闭OPcache或切换到php 7.1或更低版本可以解决问题.

我到处寻找有关如何调试导致OPcache失败的原因(以及原因)的一些信息,因为关闭它不是一个解决方案,但找不到任何有用的东西(也检查过类似的SO问题,比如这个也没有因此,我正在向专家们寻求帮助,我相信这也将有助于其他人.

谢谢.

PS注意一个很长的手动试错后,我能找到的文件在我的PHP应用程序,它是造成OPcache失败/崩溃,并列入黑名单在OPcache php.ini配置该文件(也降低了它的大小工作得很好,所以我怀疑问题是内部的实际代码),但我仍然在寻找一种简单的方法来调试这些问题,而无需检查和检查服务器上的每个文件.我也不知道它为什么会失败,所以找到失败的原因将有助于向OPcache开发人员提交bug报告.

编辑: 添加pastebin链接需要将代码添加到问题中.这是pastebin文件的开头:

<?php

global $_LANGADM;
$_LANGADM = array();

$_LANGADM['AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
$_LANGADM['AdminAddressese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?';
Run Code Online (Sandbox Code Playgroud)

TL; DR

我在寻找:

1)一种轻松确定OPcache是​​使脚本失败的扩展的方法,无需通过手动试验和错误遍历每个扩展(打开/关闭它们直到找到失败的扩展名).

2)轻松找到一种方式/日志,显示启用OPcache时哪个文件及其失败的原因.

简单来说 - 我们怎么知道OPcache失败时何时,何地以及为什么会失败,因为没有任何报告/日志就像在大海捞针一样,尤其是当OPcache失败时,即使Xdebug似乎没有记录或输出任何内容, 由于某些原因.

再次感谢

php debugging opcache

9
推荐指数
1
解决办法
809
查看次数

无法在Centos 6.4上安装php 5.5 opcache

我在CentOS上安装了PHP 5.5(据我所记得的,来自Remi repo).

现在我想打开opcache并配置它,但事实证明我在系统中没有opcache.so文件.所以我试着用yum安装它.

# yum --enablerepo=remi install php-pecl-zendopcache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.proserve.nl
* epel: mirror.proserve.nl
* extras: ftp.tudelft.nl
* remi: remi.mirrors.hostinginnederland.nl
* rpmforge: nl.mirror.eurid.eu
* updates: mirror.proserve.nl
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php-pecl-zendopcache.x86_64 0:7.0.2-2.el6.remi will be installed
--> Processing Dependency: php(zend-abi) = 20100525-x86-64 for package: php-pecl-zendopcache-7.0.2-2.el6.remi.x86_64
--> Processing Dependency: php(api) = 20100412-x86-64 for package: php-pecl-zendopcache-7.0.2-2.el6.remi.x86_64
--> Finished Dependency Resolution
Error: Package: php-pecl-zendopcache-7.0.2-2.el6.remi.x86_64 (remi)
       Requires: …
Run Code Online (Sandbox Code Playgroud)

php yum centos6 opcache

8
推荐指数
1
解决办法
2万
查看次数

同时使用Opcache和Xcache

我只是想知道同时使用Xcache 3和Zend Opcache缓存PHP文件是愚蠢的吗?我知道两者几乎都做同样的工作,但不确定这是否会对性能和速度产生任何影响.

我想加快我的php页面加载速度,以便访问者不需要等待很长时间.

有什么想法吗?

php xcache opcache

8
推荐指数
1
解决办法
6227
查看次数

如何在 opcache 中启用优化(在官方 php-fpm docker 镜像中)

该容器是由一个简单的 Dockerfile 构建的:

FROM php:7.2.19-fpm

RUN docker-php-ext-configure opcache --enable-opcache \
    && docker-php-ext-install opcache
Run Code Online (Sandbox Code Playgroud)

我没有更改 php.ini,所以所有设置都是默认的。

令人意想不到的是,现在 phpinfo 显示(摘录):

Opcode Caching  Up and Running
Optimization    Disabled
SHM Cache   Enabled
File Cache  Disabled

opcache.enable  On  On
opcache.optimization_level  0   0x7FFFBFFF
Run Code Online (Sandbox Code Playgroud)

问题:我还需要做什么才能启用优化?

php docker opcache php-7.2

8
推荐指数
1
解决办法
1万
查看次数

每个php-fpm池都有自己的内存池吗?

假设我正在使用PHP 5.5操作码缓存,并设置

opcache.memory_consumption=128

如果我在php-fpm中有4个池,那么4个池中的每个池共享128MB的缓存,或者它们是否会为每个池拥有128M的opcache?

php opcache

7
推荐指数
2
解决办法
3444
查看次数

Opcache 重新验证 php.ini 中的频率配置

如果我在 php.ini 文件中设置此配置:

opcache.revalidate_freq = 0
Run Code Online (Sandbox Code Playgroud)

它仍然比禁用 Opcache 系统更好吗?

因为在我看来,它会检查每个请求的文件更新,所以它就像 Opcache 被禁用一样。

php zend-framework config opcache

7
推荐指数
2
解决办法
7606
查看次数

启用OPCache不在WAMP中工作

我试图在WAMP 3中为Drupal 8.0.4启用OPCache但是它不起作用.所以我用google搜索并更改了我的php.ini文件中的一些内容,这是我更改的内容:

opcache.enable=0
Run Code Online (Sandbox Code Playgroud)

opcache.enable=1
Run Code Online (Sandbox Code Playgroud)

并且

opcache.enable_cli=0
Run Code Online (Sandbox Code Playgroud)

opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)

但是,'!' 标记出现在PHP扩展附近.当我尝试获取日志时,它说:

Sorry,

The 'php_opcache' extension cannot be loaded by 'extension=php_opcache.dll' in php.ini. Must be loaded by 'zend_extension='.

Switch cancelled

Press ENTER to continue...
Run Code Online (Sandbox Code Playgroud)

但是在PHP.ini文件中它说:

zend_extension ="C:/wamp/bin/php/php7.0.0/ext/php_opcache.dll"
Run Code Online (Sandbox Code Playgroud)

我还应该做些什么才能启用OPCache?

wamp opcache

7
推荐指数
1
解决办法
4654
查看次数

OPcache max_accelerated_files 实际上是如何工作的?

也许这是一个愚蠢的问题,但我试图弄清楚 max_accelerated_files 实际是如何工作的......

我理解 PHP net 的“描述/说明”

opcache.max_accelerated_files 整数 OPcache 哈希表中键(以及脚本)的最大数量。使用的实际值将是素数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中大于或等于配置值的第一个数字。最小值为 200。 PHP < 5.5.6 中最大值为 100000,更高版本中为 1000000。

但我的问题是配置后它会如何处理这个数字。它是否为此设置分配内存?如果我们有足够的内存,为什么我们不直接设置数字 1000000 就这样呢?如果我们将此数字配置为 2000 并且我们有 2010 个文件,会发生什么情况?它们是否对堆栈进行某种排序,一旦该文件发生变化,它就会被缓存?未缓存的文件会发生什么情况?

谢谢您的回答

php opcache

7
推荐指数
1
解决办法
3183
查看次数

标签 统计

opcache ×10

php ×9

centos6 ×1

config ×1

debugging ×1

docker ×1

php-7 ×1

php-7.2 ×1

suphp ×1

wamp ×1

xcache ×1

yum ×1

zend-framework ×1