【问题标题】:Lots of php files or one big php file大量 php 文件或一个大 php 文件
【发布时间】:2015-04-08 09:22:21
【问题描述】:

我想知道当网站有数百万用户每天发出数百万个请求时,哪种方法在速度和性能方面更好。

这是怎么回事? - 每分钟有数千个请求投票、关注、添加到收藏夹(正在将值插入到 mysql 表中)等

这些只是示例,实际测量值要高得多

方法 1

有一个executeQueries.php 文件。 executeQueries.php

  <?php
   $action = $_POST['action'];
   switch($action){
      case 'vote':
         #query for inserting vote
      break;
      case 'follow':
         #query for inserting follower
      break;
      case 'favorite':
         #query for inserting favorite
      break;
    }
  ?>

方法2

一共有三个文件。

vote.php , follow.php , favorite.php

其中包含单独插入到它们各自的表中

【问题讨论】:

  • 很多小文件更容易维护,这比任何性能差异都重要
  • 那我应该采用方法 2 吗? @MarkBaker
  • 如果您不使用操作码缓存或自动加载,那么一个大文件可能会快几纳秒....但是使用操作码缓存和自动加载将提供更好的性能,尤其是在处理大量文件的情况下较小的文件
  • 如果您预计每分钟有数千个请求,那么您应该使用带有操作码缓存的最新版本的 PHP
  • 什么是“操作码缓存或自动加载”? @MarkBaker

标签: php mysql ajax performance server


【解决方案1】:

对于 Apache + PHP + PHP 缓存方案,这些方法之间没有性能差异。您拥有的任何 PHP 文件都将被快速编译和缓存。然后,运行一个 PHP 文件基本上是一样的,不管它做所有事情还是只做一件事。代码中的 IF 测试无关紧要——连接到 MySQL 并执行 UDPATE 将是最大的时间消耗者。 (我是根据在具有这种配置的大型互联网公司工作了十多年的经验。)

普通 MySQL 配置中的普通 INSERT/UPDATE 会以每秒 100 次左右的速度停止,原因很简单,因为旋转磁盘速度。有很多方法可以解决这个问题。我的意思是 PHP 问题不是你最重要的问题。

【讨论】:

  • 嗯?那我该怎么办?
  • 您询问“显示我愿意 (1) 或 (2)”,但未提及选项 (3) 和 (4) 和 (5)。我是说(3)“(1)或(2)中的哪一个都没有关系”。所以,掷硬币。 (4) 是“视情况而定”——但我没有想到任何可能有助于做出决定的未说出口的事情。 (5) -- 好吧,我怀疑还有其他选择。
  • 但我也说 1000 qps 可能是个问题。而且这个问题与您的 1 vs 3 PHP 文件的问题几乎无关。
  • 那么解决方法是什么?如果我有这样的东西......显然我不能一起查询它们,因为单击=1 插入/更新
  • 遇到这种情况你会怎么做? @rickjames
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多