目前,我正在运行PHP / FastCGI的多个副本,并启用APC(在Apache +的mod_fastcgi,如果该事项)。我可以共享进程之间的缓存?如何检查,如果它已经共享? (我觉得apc.mmap_file_mask INI设置可能与此有关,但我不知道如何使用它。)

(其中一个我认为原因其此刻共享在于apc.mmap_file_mask,所报告的apc.php web界面约3不同值之间翻转为我重装。)

有帮助吗?

解决方案

APC确实的目前共享其下的fastcgi或fcgid运行多个PHP-CGI工人之间的高速缓存。请参见的细节此功能要求:“这种行为是预期的一个作为现在”。

一个解决办法是让PHP来管理自己的工人。您可以使用PHP_FCGI_CHILDREN环境变量在您的包装脚本(很多例子都在网上为)做到这一点。你也应该从,如果你想用这个方法产卵多个PHP程序停止的FastCGI / fcgid。

与PHP_FCGI_CHILDREN的缺点是,它的工人的管理不是作为通过fcgid / fastcgi的设置一样好。

因此,有我们。 APC在fcgid / FastCGI的环境,就是让每一个PHP工人自己的高速缓存,或有利于PHP的内置管理禁止fcgid /的FastCGI的过程中产卵。让我们希望这改变了未来。

其他提示

虽然它并不完美Domster建议是最好的方法。我一直在做这在没有错误一些低容量的网站很短的时间。我写了上如何设置的mod_fastcgi与共享操作码缓存昨晚。

我觉得很重要的是使用的mod_fastcgi,而不是较新的mod_fcgid因为mod_fcgid会一次只给PHP程序发送一个请求,无论PHP多少孩子已经通过PHP_FCGI_CHILDREN产生了。

在缓存应进程之间共享。你应该看到了phpinfo()函数和apc.php调用之间的MMAP文件相同的值。它正在为我建议的默认APC配置设置:

extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.enable_cli=1

您可能想发表您的设置。我见过的警告,该mmap_file_mask必须是它们允许值的只有一个。所以,如果你缺少这些X中一个也没有告诉你会得到什么。

也许它涉及到您的fastcgi + apache的配置。

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