2012-04-13 160 views
-1

我有一个网页,让很多jQuery的Ajax请求的周期性,要求从PHP函数作为这样的回应:尽量减少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任务的具体细节。当我运行顶部时,我看到许多使用'php'命令的进程。我不是Linux专业人员,所以也许我可以运行一个命令来弄清楚这些过程更具体地做了什么?

+0

如果您正在轮询更改的数据,而不提交数据,则可以尝试彗星。但是,这只会将很多较短的流程换成较少的流程。 – DampeS8N 2012-04-13 19:47:14

+1

无法看到您的任何PHP代码都无法分辨。另外,这四个过程是什么?他们在征税吗?它们是否持久?您是否在适用的情况下缓存数据以减轻对MySQL的压力?这些都是要考虑的事情。 – MetalFrog 2012-04-13 19:47:30

回答

1

你可以将任何请求合并成一个请求吗?你必须以某种方式解析返回数据,但这不是什么大问题。你有控制服务器吗?如果是这样,你可以尝试一个带有fast-cgi的web服务器来控制正在运行的进程和pool db连接的数量。

0

优化的SQL Querys,可能是在可能的情况下构建缓存系统? (不知道什么youre编程有!)

你也可以切换到另一个网站服务器哪个更高性能的(我宁愿的Litespeed是快约60%,那么Apache)的

而且不知道是否Apache一次运行多个实例,这在Apache中是正常的。

0

不知道更多的信息我不能说很多,但没有你不能直接连接到从MySQL的MySQL服务器。根据您需要的数据,可能会有方法显着减少后端处理。

一些通用的想法:

  • 结合您ajaxs请求到一个单一的“心跳” /更新请求,所以你只有1个进程运行

  • 如果你能做到DB数据的一些后台缓存与财产以后像的memcache

  • 档案,并使用Xdebug的优化Ajax请求,并webgrind