我正在运行 PHP 5.6 并启用了编译模块 opcache。现在,当我阅读错误日志中的警告时,每隔几毫秒就会收到以下消息:
Warning Interned String buffer overflow
Run Code Online (Sandbox Code Playgroud)
使用此 google 搜索没有对此错误的描述。但是,源代码说,可能没有足够的内存?我读对了吗?
因此,据我所知,如果缓存耗尽并且将被重用/回收用于新字符串,那绝对没问题。如果没有,我错过了什么?
我设置opcache.interned_string_buffer为 4 到 8 MiB,但还没有运气。
小智 7
opcache.interned_strings_buffer - 一个非常简洁的设置,像 0 文档。PHP 使用一种称为字符串实习的技术来提高性能——因此,例如,如果您的代码中有 1000 次字符串“foobar”,则 PHP 将在内部为该字符串存储 1 个不可变变量,而对于另一个只使用指向它的指针使用它 999 次。凉爽的。此设置将其提升到一个新的级别——而不是为每个 SINGLE php-fpm 进程使用这些不可变字符串的池,此设置在您的所有 php-fpm 进程中共享它。它可以节省内存并提高性能,尤其是在大型应用程序中。
https://www.scalingphpbook.com/best-zend-opcache-settings-tuning-config/