【问题标题】:Can PHP Handle Multiple synchronous request with code written in pure Procedural wayPHP可以用纯过程方式编写的代码处理多个同步请求吗
【发布时间】:2015-01-09 14:37:31
【问题描述】:

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

  1. 输入基本信息 - STEP1
  2. OTP 生成并发送给用户,用户输入 - STEP2
  3. 向他显示会员编号

我使用过带有过程编码的普通核心 PHP

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

所以我被困在如何继续使用 PHP 应该将程序代码更改为面向对象还是应该使用像 codeigniter 这样的框架?

【问题讨论】:

  • PHP 不在乎您是否按程序编写代码或使用 OOP。在较低级别都是相同的操作码。您应该开始思考您的 SERVER 是否可以处理 2-3lahk 请求。
  • @Marc B 感谢您的信息,我们有一台 Linux 服务器,VPS 主机是否能胜任这项工作?
  • “vps 托管”就像说“我们有车”。大不了。这没什么好说的。如果您的货物是建筑物那么大,那么拥有汽车有什么意义?
  • 您会选择什么服务器来处理这种情况?
  • 再说一遍,我怎么知道? 2-3lahk 用户点击简单的<?php echo 'hello world' ?> 并不需要大型服务器。无论如何,这是题外话。我们不是来告诉你要获得多少服务器,或者什么样的服务器。

标签: php performance codeigniter optimization


【解决方案1】:

看到这篇文章:

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

出于您的目的,程序与 OO 没有区别。在引擎盖下,他们做同样的事情。执行线程是一样的。没有“异步与同步”或“串行与并行”之分。

只有在您使用 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

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 2023-03-27
    • 2010-12-02
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2014-11-22
    相关资源
    最近更新 更多