在文档中,它说"主要用于调试",这会导致我认为"除非你有问题,需要做一些调试,否则永远不要启用它",但是阅读我能找到的关于它的所有内容都说启用它"opcache。enable_cli1"但为什么?我找不到有关此事的任何信息,所以如果有人知道,为什么我应该启用它,如果文档基本上说保持在0?

有帮助吗?

解决方案

留下它。它主要在那里使用,同时使用opcache本身调试问题。

opcache.enable_cli选项在从命令行运行PHP脚本时启用PHP OPCache(使用php命令)。但是,请记住,对于PHP 5.x,OPCACHE扩展通过存储当前过程的存储器中的存储器中的缓存操作码。当运行PHP的进程将处理可以在Web服务器或FastCGI下处理可以重用这些操作码重用这些操作码的多个请求时,这仅是有用的。对于像PHP CLI这样的过程,它运行一个“请求”并退出,它只是浪费内存和时间。

其他提示

使用PHP7和基于文件的缓存,现在可以为CLI启用opcache。最好的可能性是有一个单独的php。具有以下配置的cli的ini:

opcache.enable=1
opcache.enable_cli=1
opcache.file_cache="/tmp/php-file-cache"
opcache.file_cache_only=1
opcache.file_cache_consistency_checks=1

opcache.file_cache_only=1 确保禁用内存中的opcache,并且只使用文件,这是您想要的CLI。这应该会大大缩短执行时间。

在php中。ini对于FPM,您将希望具有相同的设置,但使用 opcache.file_cache_only=0, ,因此使用内存中opcache并将文件缓存用作回退(这也使FPM更快,因为文件缓存在fpm重新启动或opcache重置时减少预热时间,因为缓存的文件保留)。

这样,CLI和FPM共享文件缓存,而fpm将内存缓存作为第二个主缓存,以实现最大速度。PHP7的一大进步!只要确保选择一个目录 opcache.file_cache CLI和FPM都可以写入,并且同一个用户执行写入/读取。

更新2017

我不会再建议将文件缓存与FPM一起使用(仅将其用于CLI),因为在设置时没有办法重置缓存 opcache.validate_timestamps=0 -文件缓存阻止PHP-FPM识别任何更改,因为 opcache_reset() 或者即使是完整的PHP-FPM重新启动也不会影响文件缓存,并且文件缓存没有等价物,因此更改的脚本永远不会被注意到。我报告这是一个"臭虫"/"功能请求"在2016年3月,但这目前还没有被视为一个问题。只要小心,如果你使用 opcache.validate_timestamps=0!

php docs

opcache.enable_cli boolean使Opcode缓存能够用于PHP的CLI版本。这主要用于测试和调试。

因此,除非您真的需要这个,否则应该被禁用。

当您在命令行运行的一些长期迁移过程中(本人已经通过运行了一些广泛的迁移脚本而获得了CLI的长期迁移过程,我没有看到很多性能改进)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top