乙個php請求怎樣才算結束?

2021-08-25 23:20:25 字數 1589 閱讀 2025

前邊文章說過:web-server會建立乙個執行緒(程序)來處理收到的php請求。(使用執行緒還是程序的區別見博文:那這個請求怎樣才算處理完畢呢?怎樣才能讓web-server**這個執行緒呢??

user進行一次web請求,其是要請求資料的。所以:一些乙個php指令碼最後肯定是需要echo一些資料來返回給請求它的user的(這裡的user指的是瀏覽器)。網上也有很多文章在討論說:echo速度慢,其實這是沒有正明白:怎樣才算乙個php請求的完整過程的緣故。

比如我寫如下php指令碼:

<?php $var['key'] = "temp"; echo json_encode($var); ?>

原本我認為:當執行完第二句echo之後這個請求就算執行完了,然後就該web-server**這個執行緒了。問題是:這個時候真的執行完了嗎?沒有!

①對於echo,var_dump()等而言:其實要把資料返回給user(瀏覽器)的。echo的執行過程為:其會把資料傳送給user,user收到資料並反饋回來告知:我已經收到了。echo函式收到這個成功訊號之後:其才會認為:自己使命結束了,這個函式才算執行完畢。

因為有上述這麼個過程,會導致大量問題,比如:如果user的網路不好,那這個等待傳送成功訊號的過程會很慢,嚴重影響這個php指令碼的執行速度,爭議延長其執行時間,同時導致這個請求的執行執行緒一直無法**。 那拿到具體專案上來說:幾百萬個請求同時請求乙個相同的伺服器,由於每個的執行時間都過程,這導致大量處理執行緒無法及時**,導致伺服器端積攢了大量執行緒。這回嚴重影響伺服器的響應!!

那怎樣解決這些問題呢?要解決這個問題就要從產生這個問題的根源上著手。根源就在於如上所說的:echo本身執行較慢以及php處理執行緒未釋放。

①為了處理echo較慢的問題,我們可以開啟php的輸出快取。亦即:每次echo返回給使用者的資料我們直接讓php將之存入php輸出快取中並給出成功應答,這時echo函式會認為其已經達到user端並成功了,從而執行完畢。

用這種辦法解決了echo處理慢的問題;但是echo執行完後php處理執行緒並未釋放,為什麼呢?因為此時php的輸出快取中還有剛剛存入的資料沒有傳送出去,此時php執行緒當然不能釋放。所以他還得等自己輸出快取中的資料都傳送出去了才能釋放執行緒。從這一點上來說:使用之中方法後:執行緒存在的時間根本就沒有減少,只是把原本echo消耗的時間轉義到了輸出快取上而已。 同時php快取有大小限制,若echo的資料比這個限制要大,則根本無法存到輸出快取中。

②最終極的解決辦法是:我們開啟apache的輸出快取。這樣執行echo時:直接把資料傳送到apache的輸出快取中並返回成功訊號。echo函式收到訊號就認為是成功執行了所以就執行完畢。此時php執行緒發現自己:整個指令碼都執行完畢了,也沒有輸出快取要去傳送,自己的所有工作都做完了,於是乎就釋放自己本身了。

用這種辦法:會真正減少乙個php處理程序的執行時間,讓這個執行緒盡快釋放,從而減少伺服器上的執行緒數量堆積!! 其本質是:把處理時間由php轉給了apache! 但是這樣好處是顯而易見的:無論是apache還是php執行緒去處理這個,都是要消耗同樣的時間等資源。但是用php還要額外多了執行緒消耗。開啟了apache輸出快取後:就大大減少了伺服器上的執行緒數量堆積!!

其實這種辦法並沒有讓使用者更快的受到資料,亦即:對使用者本身而言沒有任何優化;但是對伺服器卻是很大的優化,因其加快了每個請求的處理速度,避免了執行緒堆積導致的問題!!!

乙個GIS軟體怎樣才算符合SOA框架

乙個gis軟體怎樣才算符合soa框架 soa不同於ims internet map server soa是gis軟體從1993年出現的ims功能之後的新趨勢和新台階。乙個gis軟體支援soa,它需要能發布和利用以上soap xml或ogc標準的geo web services。比如esri arci...

怎樣才算乙個好的專案經理

怎樣才能算是個優秀的pm?大家發表一下自己的看法。我先來 很強的軟體開發能力 包括技術和一些方 讓客戶和 相信你的專業,讓手下的員工信服 熟悉業務領域知識 能用客戶的語言與其溝通,否則很難挖掘出客戶的真正需求 能很好和各方面溝通,處理好人際關係 處理好與 的關係,能支援你工作中的一些想法體會你的難處...

怎樣才算乙個安全的物聯網平台

乙個完整的平台解決方案能夠讓物聯網裝置在裝置端 雲端以及軟體層面一直保持其可用性和安全性。以下是物聯網平台應當遵守的一些重要的安全原則 提供aaa安全。aaa安全指的是認證 authentication 授權 authorization 和審計 accounting 能夠實現移動和動態安全。它將對使...