gpt4 book ai didi

php - 为什么默认禁用 PHP ZTS?

转载 作者:行者123 更新时间:2023-12-03 13:16:51 28 4
gpt4 key购买 nike

为什么ZTS默认禁用,我们应该编译PHP源来实现Threading能力?
当我们启用 ZTS 时是否有任何限制或副作用? ?不稳定吗?

最佳答案

PHP 最初是作为 CGI 二进制文件开始的,然后作为 Apache 的模块。这两种方式都不需要 PHP 成为线程运行时,因为它们都会按顺序处理请求。

当添加对其他 Web 服务器的支持时,尤其是通过其 ISAPI 接口(interface)支持的 Microsoft IIS,它们的处理模型要求 PHP 能够作为线程进程运行。 PHP 添加了一个“ZTS”(Zend 线程安全)模式,该模式做了相当多的工作以确保并行(线程)运行的请求不会相互影响。但这确实来了以性能为代价 .

由于大多数 Web 服务器 API 不需要启用 ZTS,因此 PHP 的默认设置是关闭。如果您要为 ISAPI SAPI(服务器抽象)层构建 PHP,那么 PHP 构建过程会自动打开 ZTS 模式。

说了这么多,ZTS 模式并不是要允许 PHP 脚本中的线程,而是允许 PHP 本身在线程环境中运行。如果您对从 PHP 脚本的角度并行运行事物感兴趣,则需要求助于第三方扩展,例如 Joe 的 parallel。扩展名,或 swoole .

关于php - 为什么默认禁用 PHP ZTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58918146/

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