看板 PHP 關於我們 聯絡資訊
※ 引述《tas72732002 (蔥頭)》之銘言: : 最近看到有人使用訊息佇列(message queue)的方式來提升效能, 如gearman : 而我目前的做法是利用php exec()透過linux背景執行,降低response的時間, : 我想請問一下兩者的差異是差在gearman可以建立分散式系統環境, : queue伺服器可以水平擴充, 提升更好的效能, : 而exec則是在本機, 還是會影響本機伺服器效能, : 是差在這兩個地方嗎? 目的都是降低php response時間, : 不知道這樣見解有錯誤嗎? exec() 不會在「背景」執行,php 會等 exec() 裡面的指令跑完才繼續下去 message queue 會增加網頁反應速度的原因不是因為可以擴充很多機器 而是因為我現在不去做那些工作,晚點再做,不論是丟給別人做還是自己做 例如使用者在社群網站上按下備份按鈕,網頁可以不用等到整份備份做完才顯示結果 而是先把「備份」這個工作丟進 queue 裡面,然後畫面立刻顯示「請先稍候」 等到備份工作跑個二十分鐘完成之後再寄信給 user 不過相對的,扔進 message queue 裡面的東西還是需要被執行 如果執行工作的 worker 機器很慢,那麼備份工作可能要等一小時才能完成 如果工作進來的速度太快,例如五秒就有一個人按備份,那工作會永遠做不完 所以你會考慮是否需要增加做備份工作的機器,message queue 能簡化這件事情的處理 故工作丟進 message->網頁反應速度變快,這是對的 而增加 worker 機器->執行工作的效能增加,這也是對的 但增加 worker 機器->網頁反應速度變快,這是錯的,這是兩件事情 -- 將各種精密的儀器,裝置在他的體內,然後再注射特殊的動物激素,跟著經過電光的感應 這個人便產生了一股火不能融、水不能淹、電不能擊、雷不能毀的巨大力量 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.92.61 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1410883426.A.002.html ※ 編輯: GALINE (114.27.92.61), 09/17/2014 00:04:24