gpt4 book ai didi

CLI 模式下的 PHP APC

转载 作者:IT王子 更新时间:2023-10-29 00:06:47 24 4
gpt4 key购买 nike

PHP 中的 APC 模块在 CLI 模式下运行时是否支持代码优化?例如,当我使用 php -f <file> 运行文件时在执行之前是否会使用 APC 优化文件?假设 APC 设置为加载到配置文件中。另外,require_once 中包含的脚本会不会?还要优化吗?

我知道优化在 fastcgi 模式下运行时效果很好,但我想知道它是否也适用于 CLI。

apc_* 函数可以工作,但我想知道代码优化,这是我在这里追求的主要内容。

快乐的一天,马蒂奇

最佳答案

apc.enable_cli 的文档,它控制是否应在 CLI 模式下激活 APC,(quoting) 说:

Mostly for testing and debugging. Setting this enables APC for the CLI version of PHP. Under normal circumstances, it is not ideal to create, populate and destroy the APC cache on every CLI request, but for various test scenarios it is useful to be able to enable APC for the CLI version of PHP easily.

也许 APC 会将操作码存储在内存中,但随着 PHP 可执行文件在脚本结束时终止,该内存将会丢失:它不会在脚本执行之间持续存在。

所以 APC 中的 opcode-cache 在 CLI 模式下是无用的:它不会优化任何东西,因为 PHP 每次启动 PHP 的可执行文件时仍然需要将源重新编译为操作码。


实际上,APC 并没有“优化”:执行 PHP 脚本的标准方式是这样的:

  • 读取文件,并将其编译成操作码
  • 执行操作码

APC 所做的是将操作码存储在内存中,因此 PHP 脚本的执行变为:

  • 从内存中读取操作码(比编译源代码快得多)
  • 执行操作码

但这意味着你必须在内存中有一些地方来存储操作码。当 PHP 作为 Apache 模块运行时,Apache 负责该内存段的持久性……当 PHP 从 CLI 运行时,没有任何东西可以将内存段保留在那里,所以它在 PHP 执行结束时被销毁。
(我不知道它到底是如何工作的,但至少在原理上是这样的,即使我的话不是很“技术性”^^)


或者,“优化”指的是操作码缓存以外的其他内容,例如配置指令 apc.optimization ?如果是这样,这一项已在 APC 3.0.13 中删除

关于CLI 模式下的 PHP APC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com