除了阅读人们使用APC/Opcache/Memcache/Memchached/Varnish之外,我对缓存一无所知......让PHP变得更快:)
所以,我上周试用了APC,因为我使用的是PHP5.4,但后来更新了我的PHP5.5,所以我可以使用Opcache.所以,现在Opcache正在工作,我甚至需要让我的wordpress网站更快,因为我听说APC与opcache不兼容,我想知道memcached是否可以使用,因为我几乎可以肯定清漆是好的,因为它与PHP无关.
那么,使用memcached会进一步改善我的网站吗?
我们网站上的图像大小调整脚本偶尔会失败并出现以下错误:
PHP致命错误:在第4行找不到类'\ xa0L\xdaor\x7f'
有问题的脚本的实际第4行是:
$photo = new Photo($photo_id);
Run Code Online (Sandbox Code Playgroud)
我不知道\xa0L\xdaor\x7f错误日志中的十六进制代码来自何处.该脚本运行正常并且相对频繁地运行一两天,然后每次都会因为该错误而开始失败.
如果我跑opcache_reset(),错误就会停止.
任何人都知道可能导致这个问题的原因是什么?
更新:我没有响应 - 所以我只是使用操作码缓存中的这个文件opcache.blacklist_filename.
我正在尝试启用Opcache,但是由于某些原因,在编辑php.ini文件并重新启动apache(甚至重新启动服务器)之后,仍然没有启用它。运行测试,我可以看到php文件的位置:
Loaded Configuration File /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)
在该文件中,我添加了:
zend_extension=/usr/lib/php5/20121212/opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)
zend扩展的位置由locate opcache.so定义。这没有用。然后,我注意到php正在加载其他文件/etc/php5/apache2/conf.d/05-opcache.ini。在该文件中,它看起来像:
; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)
但是,重新启动apache后仍将无法启用。以下是我的phpinfo()输出:
Opcode Caching Disabled
Run Code Online (Sandbox Code Playgroud)
我如何才能启用它?
我们在Windows Server上使用IIS 8.5和php 5.6.15通过FastCGI运行一个typo3网站.为了提高性能并减少db-load,我们启用了WinCache-Extension,因为它具有UserCache功能.WinCache的OpCache被禁用,因为它被声明为已弃用且OpCache已与php捆绑在一起.
任何意见,将不胜感激.
我使用的是PHP 7.0.4,一切运行顺利,我刚刚升级到PHP 7.0.8,我开始在这个地方遇到像这样的错误.
致命错误:无法声明类Plugins\Users\Plugin,因为该名称已在第8行的/var/www/html/plugins/Users/Plugin.php中使用
有没有人知道最新情况,我一直在阅读更改日志,但这是一个补丁更新它不应该破坏任何东西?
此外,如果没有找到此问题的解决方案,我该如何降级回7.0.4?(我正在使用ubuntu 16.04,我刚刚升级到点发布)
总结到目前为止的评论:
require或include在任何地方是否可以在Windows环境中为PHP 5.4.29安装Zend OPcache模块?我已经下载了与PHP 5.4兼容的OPCache但是
php -v
Run Code Online (Sandbox Code Playgroud)
没有显示任何新加载.
我知道你可以使用Symfony APC或XCache Class Loader.不幸的是,在我放置Symfony代码的共享服务器中,只激活了OpCache.
我可以在OpCache中使用Symfony吗?如果是的话,我的app.php中的代码如何以及是什么?如果没有,请问为什么?
我正在对 php 文件进行更改,但有时它们没有显示。有时他们会立即表现出来。有时我必须等待几分钟。我已经检查并关闭了所有我能想到关闭的缓存。这个问题是不一致的,并且很难一致地重复。
我修改了 php.ini 文件以启用操作码缓存并重新启动 apache,但 phpinfo() 却看不到它。php -v 说:
PHP 7.4.1 (cli) (built: Dec 18 2019 14:46:18) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我从这个命令中看到的大多数其他示例都说“使用 Zend Opcache”。
根据 php 的说法,除了 at 的文件之外/usr/local/etc/php/7.4/php.ini,没有其他 .ini 文件被使用。
我尝试使用 pecl 安装 zend opcache,但这表示它适用于版本 5.2.0 至 5.5.0。
通过google搜索了30分钟。但没有取得任何进展。
返回的数据点包括opcache_get_status():
'opcache_statistics' => [
'num_cached_scripts' => 90,
'num_cached_keys' => 96,
'max_cached_keys' => 3907,
...
]
Run Code Online (Sandbox Code Playgroud)
缓存的脚本数量是正确且可以理解的(可以通过统计'scripts'返回值的部分来确认)。但“钥匙”到底指的是什么?我假设 Zend OPcache 可以组织为键/值存储。在这种情况下,脚本和密钥之间应该存在一对一的关系,除非......
我没有看到用于列出 OPcache 使用的密钥的 API。