摘要:前言整理了一些關于相關的基礎。第一部分狀態(tài)行由協(xié)議版本號狀態(tài)碼狀態(tài)消息三部分組成。由單一的順序的執(zhí)行線程一個當前狀態(tài)和一組相關的系統(tǒng)資源所描述的活動單元。
前言
整理了一些關于PHP相關的基礎。請大家隨意摘看。
通信協(xié)議網(wǎng)絡通信協(xié)議是一種網(wǎng)絡通用語言,為連接不同操作系統(tǒng)和不同硬件體系結構的互聯(lián)網(wǎng)絡引提供通信支持,是一種網(wǎng)絡通用語言。應用層
名稱 | 注釋 |
---|---|
HTTP | Hypertext Transfer Protocol 超文本傳輸協(xié)議,顯示網(wǎng)頁 |
DNS | Domain Name System 域名系統(tǒng) |
FTP | File Transfer Protocol 文件傳輸協(xié)議 |
SFTP | SSH File Transfer Protocol 安全文件傳送協(xié)議 |
SSH | Secure Shell |
名稱 | 注釋 |
---|---|
TCP | Transmission Control Protocol 三次握手傳輸協(xié)議 |
UDP |
名稱 | 注釋 |
---|---|
IP | Internet Protocol |
ICMP | Internet Control Message Protocol,主要用于路由發(fā)送錯誤報告 |
HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。它的發(fā)展是萬維網(wǎng)協(xié)會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task Force)合作的結果,(他們)最終發(fā)布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。
HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先于圖形)等。
HTTP是一個應用層協(xié)議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態(tài)的協(xié)議。
在TCP/IP協(xié)議棧中的位置HTTP協(xié)議通常承載于TCP協(xié)議之上,有時也承載于TLS或SSL協(xié)議層之上,這個時候,就成了我們常說的HTTPS。如下圖所示
默認HTTP的端口號為80,HTTPS的端口號為443。
HTTP的請求響應模型HTTP協(xié)議永遠都是客戶端發(fā)起請求,服務器回送響應。見下圖
這樣就限制了使用HTTP協(xié)議,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候,服務器將消息推送給客戶端。
HTTP協(xié)議是一個無狀態(tài)的協(xié)議,同一個客戶端的這次請求和上次請求是沒有對應關系。
客戶端發(fā)送一個HTTP請求到服務器的請求消息包括以下格式
請求行(request line)
請求頭部(header)
空行和請求數(shù)據(jù)四個部分組成。
Get請求例子
GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8
POST請求例子
POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley
第一部分:請求行,第一行顯示請求類型,以及http1.1版本。
第二部分:請求頭部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:請求數(shù)據(jù),第八行。
一般情況下,服務器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應消息。
HTTP響應也由四個部分組成
狀態(tài)行
消息報頭
空行和響應正文。
HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8
第一部分狀態(tài)行 : 由HTTP協(xié)議版本號、狀態(tài)碼、狀態(tài)消息三部分組成。
第二部分消息報頭 : 用來說明客戶端要使用的一些附加信息
第三部分空行 : 消息報頭后面的空行是必須的
第四部分響應正文 : 服務器返回給客戶端的文本信息。
狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應的類別,共分五種類別
狀態(tài) | 注釋 |
---|---|
1xx | 指示信息--表示請求已接收,繼續(xù)處理 |
2xx | 成功--表示請求已被成功接收、理解、接受 |
3xx | 重定向--要完成請求必須進行更進一步的操作 |
4xx | 客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn) |
5xx | 服務器端錯誤--服務器未能實現(xiàn)合法的請求 |
進程的概念是操作系統(tǒng)的結構的基礎。Multics的設計者在20世紀60年代首次使用了這個技術詞語,它比作業(yè)更通用一些。關于進程的定義,如下所示
一個正在執(zhí)行的程序。
計算機中正在運行的程序的一個實例。
可以分配給處理器并由處理器執(zhí)行的一個實體。
由單一的順序的執(zhí)行線程、一個當前狀態(tài)和一組相關的系統(tǒng)資源所描述的活動單元。
為什么設計了進程?設計出一個能夠協(xié)調各種不同活動的系統(tǒng)軟件是非常困難的。
在任何時刻都有許多作業(yè)在運行中,每個作業(yè)都包括要求按照順序執(zhí)行的很多步驟,因此分析時間的序列組合是不可的。由于缺乏能夠在所有活動中進行協(xié)調和合作的系統(tǒng)級的方法,程序員只能基于他們對操作系統(tǒng)所控制的環(huán)境的理解,采用自己的特殊方法。然而這種方法是很脆弱的,尤其對于一些程序設計中的小錯誤,因為這些錯誤只有在很少見的時間序列發(fā)生時才會出現(xiàn)。
由于需要從應用程序軟件錯誤和硬件錯誤中區(qū)分出這些錯誤,因而診斷工作是很困難的。及時檢測出錯誤,也很難確定原因,因為很難在線錯誤產(chǎn)生的精確場景。一般而言,產(chǎn)生這類錯誤的4個主要原因如下:
不正確同步
失敗互斥。
不確定的程序操作
死鎖
解決這些問題需要一種系統(tǒng)級別的方法監(jiān)控處理器中不同程序的執(zhí)行。進程的概念為此提供了基礎。
因此進程可以看做是由三部分組成的
一段可以執(zhí)行的程序
程序所需要的相關數(shù)據(jù)
程序的執(zhí)行上下文
進程的創(chuàng)建傳統(tǒng)地,操作系統(tǒng)創(chuàng)建進程的方式對用戶和應用程序都是透明的,這在當代操作系統(tǒng)中也很普遍。但是允許一個進程引發(fā)另一個進程的創(chuàng)建將是很有用的。
例如一個程序進程可以產(chǎn)生另一個進程,以接受應用程序產(chǎn)生的數(shù)據(jù),并將數(shù)據(jù)組織成適合以后分析的格式。新進程與應用程序并行的運行,并當?shù)玫叫碌臄?shù)據(jù)時被激活。
這個方案對于構造應用程序是非常有用的,例如,服務器進程(如打印服務器、文件服務器)可以為它處理的每個請求產(chǎn)生一個新進程。當操作系統(tǒng)為另一個進程的顯式請求產(chǎn)生一個新進程時,這個動作稱為進程派生。
當一個進程派生另一個進程時,前一個稱作父進程,被派生的進程稱作子進程。在典型的情況下,相關進程需要像話之間通信和合作。對程序員來說,合作是一個非常困難的任務。
什么是線程線程是進程的一個執(zhí)行流,線程不能分配系統(tǒng)資源,它是進程的一部分,比進程更小的獨立運行的單位進程和線程的關系
進程就像地主,有土地(系統(tǒng)資源),線程就像佃戶(線程,執(zhí)行種地流程)。每個地主(進程)只要有一個干活的佃戶(線程)。
進程-資源分配的最小單位,相對健壯,崩潰一般不影響其他進程,但是切換進程時耗費資源,效率差些。
線程-程序執(zhí)行的最小單位,沒有獨立的地址空間,一個線程死掉可能整個進程就死掉,但是節(jié)省資源,切換效率高。
PHP常見的進程和線程在web應用中,我們每次訪問php,就建立一個PHP進程,當然也會建立至少一個PHP線程
PHP使用pcntl來進行多進程編程
PHP中使用pthreads來進行多線程編程
nginx的每個進程只有一個線程,每個線程可以處理多個客戶端的訪問
php-fpm使用多進程模型,每個進程只有一個線程,每個線程只能處理一個客戶端訪問
apache可能使用多進程模型,也可能使用多線程模型,取決于使用哪種SAPI
致謝感謝你看到這里,有時一些底層的知識會對日常開發(fā)起到很大的作用,去理解它,并非徹底了解它。有什么問題可在評論區(qū)留言,謝謝
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29226.html
摘要:轉換特殊字符為實體預定義的字符是和號成為雙引號成為單引號成為小于成為大于成為默認為常量名描述轉換雙引號,不轉換單引號。 1.htmlspecialchars($string, $flag) (Convert special characters to HTML entities 轉換特殊字符為HTML實體) 預定義的字符是: & (和號)成為 & (雙引號)成為 (單引號)成為 ...
摘要:如何實現(xiàn)持久化持久化,將在內存中的的狀態(tài)保存到硬盤中,相當于備份數(shù)據(jù)庫狀態(tài)持久化,持久化是通過保存服務器鎖執(zhí)行的寫狀態(tài)來記錄數(shù)據(jù)庫的。 showImg(https://segmentfault.com/img/bVbejmD?w=643&h=404); 這是我整理的一套面試題,老鐵們看看就當復習了哦 概述 感覺現(xiàn)在發(fā)面試題有些冷門,就跟昨天德國那場似的,不過看看當提前復習了。提前備戰(zhàn)。...
摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩(wěn)定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發(fā)者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...
摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩(wěn)定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發(fā)者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...
摘要:模式,單實例多進程,常用于多語言混編,比如等,不支持端口復用,需要自己做應用的端口分配和負載均衡的子進程業(yè)務代碼。就是我們需要一個調度者,保證所有后端服務器都將性能充分發(fā)揮,從而保持服務器集群的整體性能最優(yōu),這就是負載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...
閱讀 1605·2021-09-23 11:31
閱讀 920·2021-09-23 11:22
閱讀 1337·2021-09-22 15:41
閱讀 4062·2021-09-03 10:28
閱讀 2907·2019-08-30 15:55
閱讀 3536·2019-08-30 15:55
閱讀 1942·2019-08-30 15:44
閱讀 2712·2019-08-30 13:50