【问题标题】:Will the PHP 5.5 opcache be shared across processes with FastCGI (mod_fcgi)?PHP 5.5 opcache 是否可以通过 FastCGI (mod_fcgi) 跨进程共享?
【发布时间】:2014-06-20 00:50:06
【问题描述】:

我的网站使用 FastCGI (mod_fcgi) 在 PHP 5.5 上运行。我知道其他 opcache 类型(如 APC)不能很好地工作,因为 内存不在 php-cgi 进程之间共享 (here)。

我正在使用 PHP 5.5 内置的 OPcache。是进程之间共享内存还是这与mod_fcgi的APC/Xcache完全相同的问题?

有什么方法可以测试吗?

【问题讨论】:

    标签: php fastcgi


    【解决方案1】:

    我一直不明白为什么这甚至被认为是一种可能性,这不是一个现实的可能性:

    APC 和 Opcache 都有几种共享内存形式,它们的默认值和最合适的类型是 mmap'd 内存,但是由于各种奇怪的原因它们需要支持劣质类型,这些劣质类型都没有可能(甚至是一个不切实际的) 来工作。

    说到mmap...

    APC

    如果您不提供文件掩码 APC 使用匿名共享映射,则您无法跨不同的进程边界共享它,这是不可能的。

    如果您确实提供了文件掩码,APC 使用非同步共享映射,尝试跨不同进程边界共享它是没有意义的,因为它几乎总是包含映射内存的损坏影子,这就是不同步。

    Opcache

    不向您提供 APC 试图提供的任何非选项,所有映射都是匿名完成的。

    解决方案

    使用健全的网络服务器,例如 nginx/lighthttpd,并使用 PHP 中包含的 fpm

    FPM 的进程模型允许它 fork 的子进程有一个共同的缓存,问题已解决,适用于 APC 和 Opcache。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2015-05-08
      • 2015-08-31
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多