PHP是單線程的,如何應對大量的http訪問?

來源:互聯網
上載者:User
剛開始只知道php可以做網站,從來沒有接觸過php的線程問題,今天突然瞭解到php是單線程的,可是突然想到,php做的網站肯定是用於多人訪問的,如果訪問量大,那豈不是出現排隊問題?
這是真的嗎?還是apache在處理php程式的時候會用伺服器實現多線程呢?


回複討論(解決方案)

nginx+php

nginx+php

可否說得詳細些呢?這意思是apache+php是單線程的?

nginx+php

查了下,貌似明白了,apache+php是阻塞型處理,nginx+php是非同步非阻塞的

應對 http 的訪問,是 網頁伺服器的事情,與 php 沒什麼關係
php 只是作為 網頁伺服器的指令碼出現的

應對 http 的訪問,是 網頁伺服器的事情,與 php 沒什麼關係
php 只是作為 網頁伺服器的指令碼出現的

蒙了,那一般說php是單線程和java的多線程的是什麼意思呢?求指導,求詳解啊,不用太深

可以用WEB伺服器多線程調用PHP!

php有進程管理器,fpm fcgi什麼的。php語言本身是沒有多線程的。

應對高並發的話,用nginx或其他軟體做負載平衡服務。php層面可以用gzip壓縮和緩衝等等。

PHP確實沒有多線程,因此不能在代碼裡再開一個線程去執行其他任務,不能像java一樣,同一時刻有多條主線邏輯在執行.但是這和大訪問量並沒有多大關係, 因為請求過來,是nginx或apache處理的,然後調用php處理,調用可以是同時進行的,會開啟許多要訪問指令碼的進程,進程與線程是不同的.每個使用者都會對應伺服器的一個php指令碼進程,執行過後(頁面被開啟),進程就被銷毀,記憶體得到釋放.

PHP確實沒有多線程,因此不能在代碼裡再開一個線程去執行其他任務,不能像java一樣,同一時刻有多條主線邏輯在執行.但是這和大訪問量並沒有多大關係, 因為請求過來,是nginx或apache處理的,然後調用php處理,調用可以是同時進行的,會開啟許多要訪問指令碼的進程,進程與線程是不同的.每個使用者都會對應伺服器的一個php指令碼進程,執行過後(頁面被開啟),進程就被銷毀,記憶體得到釋放.


那單例模式中
if($instance == null) {
$instance = new instance();
}
這塊會不會因為伺服器調用多個php指令碼進行處理,兩個調用同時進行了,從而導致new出兩個instance呢?

php處理完一個進程,才會接著去處理其他的進程。

所有被啟動的 php 解譯器都是相互獨立的
自然被其解釋的 php 代碼也是相互獨立的

所謂單例,只是對於當前啟動並執行 php 代碼集合而言的

個人理解, php 就是一個開發語言,無關 幾線程。


PHP確實沒有多線程,因此不能在代碼裡再開一個線程去執行其他任務,不能像java一樣,同一時刻有多條主線邏輯在執行.但是這和大訪問量並沒有多大關係, 因為請求過來,是nginx或apache處理的,然後調用php處理,調用可以是同時進行的,會開啟許多要訪問指令碼的進程,進程與線程是不同的.每個使用者都會對應伺服器的一個php指令碼進程,執行過後(頁面被開啟),進程就被銷毀,記憶體得到釋放.


那單例模式中
if($instance == null) {
$instance = new instance();
}
這塊會不會因為伺服器調用多個php指令碼進行處理,兩個調用同時進行了,從而導致new出兩個instance呢?



會啊, 單例模式在PHP中只會正對當前啟動並執行指令碼, 你也指出了, 是要先檢測$instance 是否為空白的, 這僅僅局限於本次啟動並執行指令碼不會new出多個對象
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.