当一个网页实时生成哪个内存使用服务器端或客户端?

时间:2011-07-23 08:06:20

标签: php client-server

我编写了一个php代码,它将从数据库中获取一个id并使用该ID,它将使用其他网站提供的一些API并生成一个页面。

这里我的问题是这个生成的页面将占用服务器或客户端机器上的空间?

如果10000人将打开同一页面,那么在这种情况下我的服务器会变慢。

我应该在MySQL数据库中存储该API的所有数据。

是什么让它变得快速和安全安全...

请建议我......

由于

4 个答案:

答案 0 :(得分:1)

这一切都取决于你的垃圾收集。在呈现页面时,服务器将使用内存,但是一旦输出发送到浏览器,PHP将不再关心。现在,如果你有非常糟糕的垃圾收集,Apache肯定会耗尽内存。它有内置的垃圾收集协议,但如果你依赖它们,你只需要丢弃数据包和页面挂起。

如果10000人同时访问您的服务器,那么很可能是您的CPU将成为瓶颈。

这就是为什么经过验证的PHP框架是大型项目的理想选择,因为大多数项目已将所有这些考虑在内并具有内置的优化实现。

答案 1 :(得分:1)

如果10000人将通过操纵另一个站点的API来抓取您正在动态创建的同一页面,则听起来就像是从其他站点提取数据,并在服务器上使用PHP构建页面。所以是的,每次点击都会占用系统上的少量内存和处理资源。内存使用可能受限于您的Web服务器允许使用的线程数或分叉数。处理能力不会受到人为限制;它将受到服务器可以处理的限制。

但回到那个数量为10000的人再次抓住同一页面。如果有可能你会想要在本地生成页面,并以某种方式缓存它,这样它只需要生成一次。当你可以生成一次相同的输出生成相同的输出10,000次并让它被取出10,000次是没有意义的。然后它就变成了决定缓存何时过时的问题。

答案 2 :(得分:1)

这完全取决于。 因素是: -

  1. 生成请求回复所需的时间
  2. 请求的大小
  3. 并发连接
  4. Web服务器
  5. api的速度
  6. 还有更多...... 如果一段时间内有10000个请求,但是如果每秒发出10000个请求,那么服务器可能不会减速,那么可能会产生影响,这取决于给定的列表。如果有更多的并发连接到服务器,那么每个连接将耗尽一些内存,内存溢出可能会停止服务器。因此,请确保即使您获得了很多请求,这些请求也会快速提供,并且它们的连接和进程不会长时间保留在内存中。这样可以节省内存和服务器崩溃。

    但是,如果api的输出对于不同的用户来说是相同的,那么将对象保留在内存中会更明智,因为内存访问比磁盘访问快得多。

答案 3 :(得分:1)

  

我编写了一个php代码,它将从数据库中获取一个id   使用该ID它将使用其他网站提供的一些API   生成一个页面。   在这里我的问题是这个生成的页面将占用空间   服务器或客户端机器?

如果您只从数据库中获取一个ID,则生成的页面将出现在客户端上。为此,您可以先执行jquery.ge t来从服务器获取ID。接下来,您可以使用JSONP(带填充的JSON)从其他API获取数据。但是为了实现这一点,API的过程需要支持JSONP,因为javascript客户端因为same origin policy而无法使用jquery.get获取数据,但幸运的JSONP可用于此。最后,您可以使用DOM轻松地将数据附加到.html。您应该小心使用其他API,并且需要确保这些是安全的API,否则您将容易受到XSS的攻击。如果您不确定,请改用.text

  

我应该在MySQL数据库中存储该API的所有数据。

这取决于API是否提供JSONP。

  是什么让它变得快速和安全安全...

快速

  1. APC缓存已编译的字节码。这将极大地加速您的网站,甚至无需更改代码库中的单行。
  2. 在内存数据库中作为redis或memcached。您还可以使用APC将数据存储在内存中。这将极大地加速您的网站,因为触摸光盘(将光盘旋转到右侧扇区等)非常昂贵并且使用内存非常快。
  3. No-Framework approach会让您的网站变得更快,因为PHP应该dynamic language,您应该尝试尽可能少。
  4. 只处理低垂的水果。请记住,“过早优化是所有邪恶的根源”。 Rasmus Lerdorf教你如何在这段视频Simple is Hard from DrupalCon 2008中完成这项工作。幻灯片位于PHP's talks section
  5. 安全

    1. Read up OWASP top 10
    2. 使用XSS
    3. 防范filter
    4. 使用SQL-injection(预备陈述)保护PDO
    5. 防范CSRF