gpt4 book ai didi

php - Apache 下的 PHP 是可重入的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:36:51 25 4
gpt4 key购买 nike

真的只是一个理论问题。

假设我的网站包含一个使用 PHP 邮件功能发送电子邮件的表单。我有 500 个用户同时点击提交。现在必须从 PHP 发送 500 个不同 session 中的 500 封电子邮件。

会同时进行吗?涉及多少个线程?每个人都会发送阻止其他人并一个一个地做吗?

最佳答案

您需要考虑两件事。

首先是您如何配置 Web 服务器。如果您使用的是 Apache,则有一些 processing modules可以从中挑选。最流行的处理模块是prefork,其中有一个单父进程和多个子进程。每个 child 一次处理一个请求。这完全避免了线程化,因为并非所有 Apache 模块都是线程安全的。您可能还会在生产中的某个地方找到 worker 模块。它使用 fork 行为和线程的组合来为每个 child 提供多个请求。它只能在每个 Apache 模块及其所有依赖项都是线程安全的情况下使用。

第二个要考虑的是 PHP 本身。虽然核心 PHP 语言和一些扩展是线程安全的,但许多扩展不是线程安全的。因此,当您使用 Apache 和 mod_php 时,prefork 处理模块是您的最佳选择。 (PHP 本身没有线程的内部概念。)

tl;dr:Apache + PHP = 每个 Apache 子节点一个请求。您通常只有 20-30 个 Apache 子级,这意味着 20-30 个可能的并发请求。这取决于配置。

关于php - Apache 下的 PHP 是可重入的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236983/

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