可以PHP 以纯过程方式编写的代码处理多个同步请求

Can PHP Handle Multiple synchronous request with code written in pure Procedural way

我上周建了个站,简单的注册流程,流程如下

  1. 输入基本详细信息 - 第 1 步
  2. OTP 生成并发送给用户,用户输入它 - 第 2 步
  3. 会员编号显示给他

我使用了 Plain Core PHP 程序编码

客户说他预计在发布之日会有 120 万人,基于我假设可能同时有 2 到 30 万个请求,我的一个疑问是 PHP 代码是否可以用 Pure 编写程序代码处理这个

所以我一直在思考如何进行 PHP 我应该将程序代码更改为面向对象还是应该使用像 codeigniter 这样的框架?

看到这个post:

Differences in procedural and object-oriented implementations of mysql in php?

就您的目的而言,程序与 OO 没有区别。在引擎盖下,他们做同样的事情。执行线程是一样的。没有发生 "asynchronous vs synchronous" 或 "serial vs parallel" 事情。

Codeigniter 只有在您使用它而不是其他框架时才会有性能优势。您可以出于其他原因选择使用它,但它们与您陈述的问题无关。您现有的 PHP 应该没问题。

第 1 步和第 2 步是单独的 PHP 请求。服务器上没有在整个用户网站访问期间持续存在的进程。您可能有很多访问者同时查看该网站,但只有他们的服务器交互才是最重要的。假设您的网站在高峰时段有 20 万访问者,每次访问持续 15 分钟。这相当于每秒大约 200 个 Step1 请求和 200 个 Step2 请求。

对于执行少量数据库请求并生成少量 HTML 的 PHP 脚本,您可能在服务器上同时处理 5 到 50 个进程 运行。这不是一个很大的负担。

您的瓶颈可能出现在第 1 步中,您每秒将通过电子邮件发送 200 个密码。您需要使用一种方法将电子邮件从 PHP 中快速取出并放入您的外发邮件服务器的队列中。如果每个邮件请求要阻止您的 PHP 请求 5 秒,您将需要 1000 个并发的 PHP 进程。做一些测试,从一个 PHP 脚本发送 1000 封电子邮件,看看它是否需要超过 5 秒。

如果您确实需要针对 1 天发布进行大规模处理,请考虑云托管,您可以在短时间内以低成本使用所需数量的服务器。例如,参见:

http://www.rackspace.com/cloud/cloud_bursting