国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

不一樣的PHP基礎知識匯總

張春雷 / 1635人閱讀

摘要:前言整理了一些關于相關的基礎。第一部分狀態(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
網(wǎng)絡層
名稱 注釋
IP Internet Protocol
ICMP Internet Control Message Protocol,主要用于路由發(fā)送錯誤報告
HTTP

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é)議,同一個客戶端的這次請求和上次請求是沒有對應關系。

HTTP Request

客戶端發(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ù),第八行。

HTTP Response

一般情況下,服務器接收并處理客戶端發(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)消息三部分組成。
第二部分消息報頭 : 用來說明客戶端要使用的一些附加信息
第三部分空行 : 消息報頭后面的空行是必須的
第四部分響應正文 : 服務器返回給客戶端的文本信息。

HTTP 狀態(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

相關文章

  • PHP特殊字符轉換實體函數(shù)匯總

    摘要:轉換特殊字符為實體預定義的字符是和號成為雙引號成為單引號成為小于成為大于成為默認為常量名描述轉換雙引號,不轉換單引號。 1.htmlspecialchars($string, $flag) (Convert special characters to HTML entities 轉換特殊字符為HTML實體) 預定義的字符是: & (和號)成為 & (雙引號)成為 (單引號)成為 ...

    B0B0 評論0 收藏0
  • 初中級PHP面試基礎匯總

    摘要:如何實現(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)。...

    B0B0 評論0 收藏0
  • 關于sass、scss、less概念性知識匯總

    摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩(wěn)定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發(fā)者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...

    HmyBmny 評論0 收藏0
  • 關于sass、scss、less概念性知識匯總

    摘要:而使用預處理器,提供缺失的樣式層復用機制減少冗余代碼,提高樣式代碼的可維護性。所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,預處理器有沒有解決更大的麻煩。也是成熟的預處理器之一,而且有一個穩(wěn)定,強大的團隊在維護。 這篇文章主要解答以下幾個問題,供前端開發(fā)者的新手參考。 1、什么是Sass和Less? 2、為什么要使用CSS預處理器? 3、Sass和Less的...

    xuweijian 評論0 收藏0
  • Node.js運行原理、高并發(fā)性能測試對比及生態(tài)圈匯總

    摘要:模式,單實例多進程,常用于多語言混編,比如等,不支持端口復用,需要自己做應用的端口分配和負載均衡的子進程業(yè)務代碼。就是我們需要一個調度者,保證所有后端服務器都將性能充分發(fā)揮,從而保持服務器集群的整體性能最優(yōu),這就是負載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    kamushin233 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<