2012-04-13 134 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