2017-04-19 53 views
0

長話短說,我試圖從數據庫中檢索用戶密碼的鹽。我計劃這樣做的方式是,當有人嘗試登錄時,它將使用他們的用戶名並找到爲該帳戶保存的鹽,並且服務器將對其進行迴應。我的問題是,如果多人嘗試同時登錄,它會在同一語句中回顯兩種鹽,還是每個用戶都連接回聲?在php的服務器上echo如何工作?

+3

每個請求都被隔離處理。 – zerkms

+3

簡單的答案:*否*。有關更多信息,您應該瞭解PHP如何處理以及它如何完全工作,並將其看作動態html創建語言......我希望這會有所幫助。 – Nytrix

+0

標題不反映該問題;恕我直言。 –

回答

0

假設您正在使用Linux/Unix和nginx。

首先記住在Linux/UNIX中,一切都是文件

將運行像下面的請求:

瀏覽器 - >的nginx - >(FastCGI的) - > PHP-fpm的運行腳本 - >(FastCGI的) - > nginx->瀏覽器

當請求到達nginx,它會通過FastCGI協議將它們發送到php-fpm。 php-fpm與master worker結構一起工作。有很多工作進程,請求將發送給工作進程。

當運行「回聲你好」,它會編譯爲操作碼ECHO,和zendVM將調用C函數寫()最後。

ssize_t write(int fd,const void * buf,size_t count);

在UNIX中,一切都是文件。 socket也是文件,所以最後寫入套接字「hello」,並且「hello」會響應nginx,並且nginx會響應瀏覽器。

您不必擔心很多請求會得到相同的消息。

FastCGI Specification

通過傳輸連接流的所有數據都在 FastCGI的記錄進行。 FastCGI記錄完成兩件事。首先,記錄 複用幾個獨立的FastCGI 請求之間的傳輸連接。此多路複用支持能夠使用事件驅動或多線程 編程技術處理併發請求的應用程序。其次,記錄在單個請求中的每個方向上提供若干個獨立的數據流 。這樣,對於 實例,stdout和stderr數據都可以通過單個傳輸從應用程序到Web服務器的連接,而不是需要單獨連接的 。

而且

應用程序記錄中包含的信息關於特定reques噸,由識別 的requestId組件。

即使有很多請求,FastCGI協議也保證每個請求都會得到不同的requestId來標識每個請求。

相關問題