久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      php怎么關(guān)閉緩沖區(qū)

      php關(guān)閉緩沖區(qū)的方法:1、打開(kāi)PHP安裝目錄,找到并打開(kāi)配置文件“php.ini”;2、在配置文件中,找到“output_buffering”項(xiàng),將該項(xiàng)的值設(shè)置為“Off”即可。

      php怎么關(guān)閉緩沖區(qū)

      本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦

      PHP 緩沖區(qū)(buffer)

      腳本輸出信息首先放入buffer,只有當(dāng)buffer滿了或者腳本運(yùn)行完畢,數(shù)據(jù)才會(huì)往下一階段轉(zhuǎn)移。在配置文件php.ini可以找到output_buffering設(shè)置項(xiàng),我的默認(rèn)配置(Windows/XAMPP v3.2.2)是4096

      php怎么關(guān)閉緩沖區(qū)

      若設(shè)置成On,緩沖區(qū)可用且無(wú)大小限制;

      若設(shè)置為Off,緩沖區(qū)不可用;

      若設(shè)置為整數(shù),緩沖區(qū)可用且為設(shè)置大小,單位字節(jié)

      需要注意的是,ini_set無(wú)法設(shè)置buffer大小,在初始化腳本運(yùn)行環(huán)境時(shí),已經(jīng)做好了buffer的定義;cli模式下始終默認(rèn)output_buffering為Off。

      那么問(wèn)題來(lái)了,緩沖區(qū)關(guān)閉和打開(kāi)有什么區(qū)別?緩沖區(qū)初始設(shè)置的大小有什么作用?cli模式默認(rèn)關(guān)閉若業(yè)務(wù)需要能開(kāi)啟嗎?緩存區(qū)存在有什么好處?

      1. 緩沖區(qū)關(guān)閉和打開(kāi)有什么區(qū)別?

      通過(guò)代碼檢驗(yàn)

      output_buffering配置為4096時(shí),運(yùn)行代碼

      php怎么關(guān)閉緩沖區(qū)

      輸出結(jié)果:在等待3秒鐘后,同時(shí)輸出了start和end

      Output_buffering配置為Off時(shí),運(yùn)行相同代碼

      輸出結(jié)果:先輸出了start,等待3秒鐘后,輸出了end

      單一看結(jié)果一模一樣啊~但是觀察其運(yùn)行過(guò)程發(fā)現(xiàn)了很驚訝的不同點(diǎn)。若緩沖關(guān)閉,先輸出“start”,等待3秒后再輸出“end”。而緩沖開(kāi)啟,會(huì)等待腳本執(zhí)行完成,一并輸出結(jié)果

      這個(gè)例子中,flush用于刷新apache的緩沖區(qū),類似讓PHP buffer與瀏覽器建立直接聯(lián)系,好讓我們的注意力能夠?qū)WHP buffer本身。

      通過(guò)一個(gè)形象的例子比喻,PHP的緩沖區(qū)像一個(gè)大房子,每次echo等輸出函數(shù)執(zhí)行時(shí),將數(shù)據(jù)扔到這個(gè)大房子里,直到腳本執(zhí)行完成或執(zhí)行ob_flush函數(shù),將數(shù)據(jù)從大房子中釋放,扔給了WebServer緩沖區(qū)。關(guān)閉了PHP緩沖區(qū)后,echo函數(shù)執(zhí)行,沒(méi)有大房子可以放怎么辦呢,就只好直接交給WebServer緩沖區(qū)了。

      通過(guò)例子和代碼執(zhí)行結(jié)果,我們能夠明白,所謂PHP buffer,是PHP本身開(kāi)辟的數(shù)據(jù)存儲(chǔ)中樞站,一系列的ob函數(shù)都是為此操作。(舉幾個(gè)例子函數(shù))

      ob_clean(); //刪除內(nèi)部緩沖區(qū)的內(nèi)容,不關(guān)閉緩沖區(qū)(不輸出)。

      ob_end_clean(); //刪除內(nèi)部緩沖區(qū)的內(nèi)容,關(guān)閉緩沖區(qū)(不輸出)。

      ob_get_contents(); //返回緩沖區(qū)的內(nèi)容,不輸出

      ob_get_length(); //返回內(nèi)部緩沖區(qū)的長(zhǎng)度,如果緩沖區(qū)未被激活,該函數(shù)返回FALSE。

      2. 緩沖區(qū)初始設(shè)置的大小有什么作用?

      將output_buffering從4096改為5,方便執(zhí)行測(cè)試

      執(zhí)行代碼

      php怎么關(guān)閉緩沖區(qū)

      輸出說(shuō)明:等待3秒后,輸出1234end

      執(zhí)行代碼

      php怎么關(guān)閉緩沖區(qū)

      輸出說(shuō)明:輸出12345,等待3秒后,輸出end

      通過(guò)輸出的比較,很能說(shuō)明區(qū)別了。

      緩沖區(qū)只能放5字節(jié)的數(shù)據(jù),放進(jìn)來(lái)的小于這個(gè)最大值,還能先存存放放,要是大于等于臨界值,那就只好將數(shù)據(jù)踢出去了,這就跟我們手動(dòng)執(zhí)行了ob_flush函數(shù)一個(gè)效果。

      3. cli模式默認(rèn)關(guān)閉若業(yè)務(wù)需要能開(kāi)啟嗎?

      這個(gè)問(wèn)題可以做個(gè)補(bǔ)充,非cli模式下,如果php.ini設(shè)置緩沖區(qū)關(guān)閉,但是業(yè)務(wù)需要用到buffer,咋整呢,難不成還要去改配置。當(dāng)然不會(huì)那么難搞了,這時(shí)候又一個(gè)ob函數(shù)來(lái)了,

      ob_start(); //打開(kāi)一個(gè)輸出緩沖區(qū),所有的輸出信息不再直接發(fā)送到瀏覽器,而是保存在輸出緩沖區(qū)里面。

      知道了PHP buffer類似數(shù)據(jù)臨時(shí)存儲(chǔ)區(qū)的概念,回過(guò)頭再來(lái)看看TP5源碼。

      php怎么關(guān)閉緩沖區(qū)

      先看看ob_get_level和ob_get_clean函數(shù)解釋

      ob_get_level() :返回輸出緩沖機(jī)制的嵌套級(jí)別。

      ob_get_clean():得到當(dāng)前緩沖區(qū)的內(nèi)容并刪除當(dāng)前輸出緩沖區(qū)。

      從代碼中也能得知一二,若level獲取大于0,獲取緩沖區(qū)的內(nèi)容并刪除緩沖區(qū),再通過(guò)ob_start打開(kāi)一個(gè)新的,這也很符合注釋里說(shuō)明的“重新申請(qǐng)”。

      這里解釋下所謂的嵌套,至于level的值啥時(shí)候會(huì)為0,并且非0的話是什么呢,請(qǐng)將php.ini output_buffering關(guān)閉,輸出看看結(jié)果。另外多次ob_start,多次ob_get_level,來(lái)試試對(duì)比輸出結(jié)果吧。

      先來(lái)看看兩種模型

      php怎么關(guān)閉緩沖區(qū)

      php怎么關(guān)閉緩沖區(qū)

      在多次ob_start打開(kāi)新的緩沖區(qū)時(shí),數(shù)據(jù)結(jié)構(gòu)的構(gòu)造為第二種,這就是嵌套了。ob_get_level返回了嵌套的級(jí)別。

      個(gè)人理解,嵌套可以套用Java的流機(jī)制來(lái)類比,一個(gè)緩沖區(qū)的數(shù)據(jù)輸出到下一個(gè)緩沖區(qū),然后可以對(duì)數(shù)據(jù)做定制化的操作。

      現(xiàn)在看TP5源碼,思路就比較清晰了。如果系統(tǒng)初始化了緩沖區(qū),因?yàn)榇笮】赡軙?huì)有限制,所以先刪除再重新打開(kāi)。而執(zhí)行ob_start打開(kāi)的緩存區(qū),它的大小“足夠大”,但是到底有多大,暫時(shí)沒(méi)有查到具體的說(shuō)明,只知道,不管寫(xiě)入數(shù)據(jù)多大,都會(huì)直到腳本結(jié)束才會(huì)發(fā)送

      4. 緩存區(qū)存在有什么好處?

      PHP輸出數(shù)據(jù)發(fā)送到WebServer,若echo執(zhí)行一次發(fā)送一次,這加大了資源消耗,不如存儲(chǔ)在內(nèi)存中,統(tǒng)一發(fā)送更有效率。

      Web請(qǐng)求包含HTTP頭部,頭部在設(shè)置之前不能有任何的輸出。PHP緩沖區(qū)替我們做好了這步工作,在頭部發(fā)送前輸出各種數(shù)據(jù),緩沖區(qū)會(huì)先將頭部信息發(fā)送到WebSever,再統(tǒng)一發(fā)送數(shù)據(jù)報(bào)文。

      推薦學(xué)習(xí):《PHP視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)