問個有關問題喲 不知道如何標題應該如何取

來源:互聯網
上載者:User
問個問題喲 不知道怎麼標題應該怎麼取
就當時標題黨吧

伺服器上有一個php 檔案 比如是1.php

當別人請求這個檔案的時候
這個檔案就會被執行 然後返回給用戶端執行後的東西



我的問題是
當a客戶訪問的時候1.php的時候 這是伺服器還沒有執行完,
突然後b客戶也來訪問了 這是1.php是等返回了a的請求在執行b的請求了,還是可以同時執行b的請求


------解決方案--------------------
同時執行b的請求
------解決方案--------------------
其實這涉及到網路模型的問題了。
你知道為什麼現在都推崇nginx來取代apache,為什麼nginx處理並發問題比apache要強很多嗎?

因為apache採用的是linux舊版本核心的select模型,而nginx採用的是2.6+版本的epool模型。

回到具體你說的這個問題上,如果b客戶來訪問時,伺服器等待a客戶的處理結果再接受b的請求,這就是select模型的工作方式。從接收到請求後之後,同一個進程會一直follow這整個握手過程,知道response結束。這種模型也很容易遭到ddos攻擊。

而epool模型,是非同步。伺服器接收到一個請求後,由一個主進程負責把任務合理分工開,有個負責分發任務的線程只負責分發任務,剩餘的事情委託給其他線程去處理,其他線程處理完畢後,會callback一下主進程可以response了,然後返回給相應用戶端。這樣的工作方式,每個請求都不會相互阻塞。

不過這樣解釋後,你可能會不明白,難道說apache就沒法處理並發任務了?一個請求阻塞了,其他的請求都進不來了?當然不是,apache worker模式下會開n個進程,所謂的阻塞,也只會阻塞住一個進程。但select模型的這種工作方式確實效率很低。

這部分知識,你可以去參考libevent
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.