【问题标题】:Is there any harm in using a thread-safe extension (APC) in a non-thread environment? (PHP)在非线程环境中使用线程安全扩展(APC)有什么危害吗? (PHP)
【发布时间】:2012-06-20 18:00:08
【问题描述】:

我打算使用这个Simple PHP Upload with a Progress Bar,它说我需要 APC 扩展。我有两个 APC 选项,线程安全的和非线程安全的。

使用 phpinfo,我发现启用了线程安全,但我不确定 php 是否真的在运行多线程。我听说 php 仍然是多线程的测试版。

无论如何,如果我的 PHP 不是多线程的并且不是“线程安全的”,那么使用 APC 的线程安全版本会有问题吗?

tl;dr 版本:线程安全 APC 是否意味着更高的兼容性(适用于 php 单线程/多线程),还是意味着需要多线程(仅适用于 php 多线程)?

【问题讨论】:

  • 如果 PHP 是用线程安全编译的,那么扩展也一定是。如果 PHP 是非线程安全的,那么扩展也必须是。除非匹配,否则不会加载扩展,在这种情况下,您将获得 an error like this(请注意 TS/NTS 不匹配)。因此,您需要线程安全的 APC。

标签: php multithreading thread-safety compatibility apc


【解决方案1】:

如果我的 PHP 不是多线程的并且不是“线程安全的”,那么使用 APC 的线程安全版本会不会有问题?

是的 - 它不会工作,期间。线程安全是一个编译设置,必须与 PHP 本身和所有扩展匹配,否则无法加载。 Here's an article 非常详细地解释了差异。

请注意,除了 TS/NTS 设置之外,需要 CPU 架构(x86 与 x64)和用于编译的 Visual Studio 版本(VC6 与 VC9)匹配,以便一个可以工作的扩展,并且该扩展的版本可能只适用于 PHP 的某个主要版本。

所有这一切意味着要获得正确的预编译二进制扩展以与您的 PHP 安装一起工作是非常困难的。

【讨论】:

    【解决方案2】:

    我建议使用线程安全版本。虽然非线程安全版本可能更快,但如果 PHP 支持线程(或其扩展支持),那么拥有额外的兼容性是个好主意。

    【讨论】:

    • 请参阅 Michael Borgwardt 的回答 -- PHP 的线程安全和非线程安全版本,包括扩展,不相互兼容。
    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多