-1

我有一个页面定期发出大量 jQuery ajax 请求,要求来自 php 函数的响应,如下所示:

$.ajax({
      url: "functions.php",
      type: "POST",
      data: {action : 'getData', id : draftid},
      dataType: "html"
    }).done(function(output) {
        $("#myDiv").html(output);
    });

现在,当我在打开这一页的同时查看机器上正在运行的任务时,我会看到四五个 php 任务正在运行。我计划让这个页面在多个页面上同时运行,我觉得我的主人不会对此感到太高兴。

是否有另一种方法可以让 jQuery 获取我从 php 脚本(主要是 MySQL 请求)中获取的信息,以最大限度地减少任务数量和 CPU 使用率?

编辑:functions.php 文件基本上只是一个 switch 语句,它调用请求的函数,该函数发出 SQL 请求并返回相关数据。

我不知道 PHP 任务的具体细节。当我运行 top 时,我看到许多带有命令 'php' 的进程。我不是 Linux 专业人士,所以也许我可以运行一个命令来找出这些进程更具体地在做什么?

4

3 回答 3

1

您可以将任何请求组合成一个请求吗?您必须以某种方式解析返回数据,但这没什么大不了的。你对服务器有控制权吗?如果是这样,您可以尝试使用 fast-cgi 的 Web 服务器来控制正在运行的进程数和池数据库连接。

于 2012-04-13T19:47:16.803 回答
0

优化的 SQL 查询,可能在可能的情况下构建缓存系统?(不知道你在那里编程!)

您也可以切换到另一个性能更高的 Web 服务器(我更喜欢 Litespeed,它比 Apache 快大约 60%)

也不要怀疑 Apache 是否同时运行多个实例,这在 apache 上是正常的。

于 2012-04-13T19:48:26.713 回答
0

在不知道更多信息的情况下,我不能说太多,但你不能直接从 javascript 连接到 mysql 服务器。根据您需要的数据,可能有一些方法可以显着减少后端处理。

一些通用的想法:

  • 将您的 ajaxs 请求组合成一个“心跳”/更新请求,这样您就只有 1 个进程正在运行

  • 如果您可以使用 memcache 之类的东西对数据库数据进行一些后端缓存

  • 使用 XDEBUG 和 webgrind 分析和优化您的 ajax 请求

于 2012-04-13T19:50:41.990 回答