婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > PHP中DirectIO操作文件擴(kuò)展的用法大全

PHP中DirectIO操作文件擴(kuò)展的用法大全

熱門標(biāo)簽:400電話個(gè)人能不能辦理 手機(jī)外呼系統(tǒng)什么原理 合肥ai電銷機(jī)器人費(fèi)用 滄州電銷外呼系統(tǒng)價(jià)格 溫州外呼系統(tǒng)招商 銀行信貸電話機(jī)器人 天津電銷外呼系統(tǒng)違法嗎 凱立德地鐵站地圖標(biāo)注 上海400客服電話怎么申請(qǐng)

關(guān)于 PHP 的文件操作,我們也將是通過(guò)一系列的文章來(lái)進(jìn)行學(xué)習(xí)。今天我們先學(xué)習(xí)的是一個(gè)很少人使用過(guò),甚至很多人根本不知道的擴(kuò)展,它與我們?nèi)粘5奈募僮饔行┰S的不同。不過(guò)這些差別并不是我們?nèi)庋鬯苤庇^看到的,主要還是在于業(yè)務(wù)的需求與性能的平衡。

什么是Direct IO

Direct IO 其實(shí)是 Linux 操作系統(tǒng)中的一個(gè)概念。它的意思是直接操作文件流,為什么說(shuō)是直接呢?其實(shí)在我們的操作系統(tǒng)進(jìn)行文件操作的時(shí)候,并不是馬上直接就在磁盤上進(jìn)行文件的讀寫,中間還有一層頁(yè)緩存。既然是緩存,那么它當(dāng)然是會(huì)帶來(lái)一定的性能提升,但這也并不是完全絕對(duì)的。而直接操作就是忽略掉這一層的緩存操作,直接對(duì)磁盤上的文件進(jìn)行讀寫。我們都知道,磁盤,即使是固態(tài)硬盤,它和 CPU 以及內(nèi)存的處理速度之間都是有著巨大的落差的,默認(rèn)的頁(yè)緩存就是用來(lái)彌補(bǔ)這種差距。但是頁(yè)緩存會(huì)加大 CPU 的運(yùn)算操作以及占用內(nèi)存,而直接操作則不會(huì)有這種問(wèn)題,但是相對(duì)來(lái)說(shuō),它的速度并不能和帶緩存的文件讀取操作相媲美。

以上是關(guān)于 Direct IO 的一個(gè)簡(jiǎn)單的理解,更詳盡的解釋大家可以參考文末參考文檔中第二條鏈接的內(nèi)容并進(jìn)行深入的學(xué)習(xí)。在 PHP 中,我們直接在 PECL 下載 Direct IO 擴(kuò)展就可以按照擴(kuò)展的正常安裝方式進(jìn)行安裝使用。

創(chuàng)建寫入文件

既然是文件操作,那么我們首先還是來(lái)創(chuàng)建和寫入一些文件數(shù)據(jù)。

$fd = dio_open("./test", O_RDWR | O_CREAT);

echo dio_write($fd, "This is Test.I'm ZyBlog.Show me the money4i"), PHP_EOL;
// 43

print_r(dio_stat($fd));
// Array
// (
//     [device] => 64768
//     [inode] => 652548
//     [mode] => 35432
//     [nlink] => 1
//     [uid] => 0
//     [gid] => 0
//     [device_type] => 0
//     [size] => 43
//     [block_size] => 4096
//     [blocks] => 8
//     [atime] => 1602643459
//     [mtime] => 1602656963
//     [ctime] => 1602656963
// )

dio_close($fd);

和 f 系列的函數(shù)類似,我們需要使用一個(gè) dio_open() 函數(shù)來(lái)打開一個(gè)文件,O_RDWR | O_CREAT 參數(shù)的意思是打開一個(gè)可讀寫文件,并且如果文件不存在的話,創(chuàng)建它。這兩個(gè)常量是與 Linux 中相關(guān)的直接操作文件的常量對(duì)應(yīng)的,在文末的鏈接中也可以看到關(guān)于這些常量的解釋。

寫入操作也是同樣的使用一個(gè) dio_write() 就能夠完成,它返回的內(nèi)容是寫入的內(nèi)容長(zhǎng)度,這里我們寫入了 43 個(gè)字符。

dio_stat() 是返回當(dāng)前文件句柄的一些信息,我們可以看到設(shè)備號(hào) device 、uid 、 gid 、 atime 、 mtime 等一些信息,它們和我們?cè)?Linux 中能夠看到的信息類似,其實(shí)就是這個(gè)文件的一些簡(jiǎn)單的信息。

讀取文件

讀取文件使用非常簡(jiǎn)單的使用一個(gè)函數(shù)就可以完成。

$fd = dio_open("./test", O_RDWR | O_CREAT);

echo dio_read($fd), PHP_EOL;
// This is Test.I'm ZyBlog.Show me the money4i

dio_close($fd);

dio_read() 函數(shù)還包含另外一個(gè)參數(shù),可以按指定的字節(jié)長(zhǎng)度讀取內(nèi)容,這個(gè)在后面我們還會(huì)看到相關(guān)的示例。

文件操作

在文件的讀取過(guò)程中,我們有可能只需要讀取一部分的內(nèi)容,或者從某一位置開始讀取文件內(nèi)容,下面的操作函數(shù)就是針對(duì)這兩個(gè)方面進(jìn)行操作的。

$fd = dio_open("./test", O_RDWR | O_CREAT);

var_dump(dio_truncate ($fd , 20)); 
// bool(true)
echo dio_read($fd), PHP_EOL;
// This is Test.I'm ZyB

dio_seek($fd, 3); 

echo dio_read($fd), PHP_EOL;
// s is Test.I'm ZyB

dio_close($fd);

其實(shí)從名稱就可以看出 dio_truncate() 就是用于截?cái)辔募?nèi)容的。在這里我們從第 20 個(gè)字符進(jìn)行截?cái)啵缓笤偈褂?dio_read() 讀取的內(nèi)容就只是前 20 個(gè)字符的內(nèi)容了。

dio_seek() 則是指定從哪一個(gè)字符開始讀取內(nèi)容,我們指定開始字符位置為 3 之后,前面三個(gè)字符就不會(huì)被讀取到了。需要注意的是,dio_truncate() 會(huì)修改原始文件的內(nèi)容,而 dio_seek() 則不會(huì)修改。

其它設(shè)置

$fd = dio_open('./test', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd, F_SETFL, O_SYNC);

dio_tcsetattr($fd, array(
  'baud' => 9600,
  'bits' => 8,
  'stop'  => 1,
  'parity' => 0
));

while (($data = dio_read($fd, 4))!=false) {
    echo $data, PHP_EOL;
}
// This
//  is
// Test
// .I'm
//  ZyB

dio_close($fd);

dio_fcntl() 函數(shù)是調(diào)用的 c 函數(shù)庫(kù)中的 fcntl 函數(shù),目的是對(duì)文件描述符執(zhí)行指定的一些操作,這個(gè)操作也是以一些常量進(jìn)行固定的,在這里我們使用的是 F_SETFL ,它的意思是將文件描述符標(biāo)志設(shè)置為指定的值,這個(gè) O_SYNC 表示的是如果設(shè)置了這個(gè)描述符,則對(duì)該文件的寫操盤會(huì)等到數(shù)據(jù)被寫到磁盤上才結(jié)束。當(dāng)然,這個(gè)函數(shù)還可以設(shè)置很多別的操作符,大家可以參考 PHP 的官方文檔進(jìn)行深入的學(xué)習(xí)。

dio_tcsetattr() 用于設(shè)置打開文件的終端屬性和波特率。 baud 表示的就是波特率,bits 表示的是位,stop 表示的是停止位,parity 表示的是奇偶校驗(yàn)位。關(guān)于這方面的內(nèi)容需要 《計(jì)算機(jī)組成原理》 及 《操作系統(tǒng)》 中的一些知識(shí),我也并不十分地清楚,所以也就不詳細(xì)的解釋了。從這里就可以看出,大學(xué)課堂上的那些基礎(chǔ)課程真的是非常地重要,相信好好學(xué)過(guò)這些專業(yè)基礎(chǔ)課程的同學(xué)一定能馬上明白這個(gè)函數(shù)的作用。

最后,我們?cè)?dio_read() 中使用了第二個(gè)參數(shù)來(lái)根據(jù)字節(jié)長(zhǎng)度讀取文件內(nèi)容,可以看到讀取出來(lái)的內(nèi)容是一段一段的以 4 個(gè)字符長(zhǎng)度為單位的輸出。

總結(jié)

函數(shù)的學(xué)習(xí)還是比較簡(jiǎn)單的,核心的還是要知道這個(gè)擴(kuò)展在什么業(yè)務(wù)場(chǎng)景下更適合使用。在文章開頭的介紹中我們已經(jīng)說(shuō)明了直接操作文件與普通文件操作的一些區(qū)別,在自緩存應(yīng)用或者需要傳輸非常大的數(shù)據(jù)時(shí),直接操作對(duì)于 CPU 和 內(nèi)存 更加地友好。而其它情況,我們還是使用系統(tǒng)默認(rèn)的文件操作方式就可以了。其實(shí)在大部分情況下,我們基本看不出來(lái)它們的顯著區(qū)別。所以在實(shí)際應(yīng)用中,還是那句話,結(jié)合業(yè)務(wù)實(shí)際情況,選擇最佳的方案。

測(cè)試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/4.PHP中DirectIO直操作文件擴(kuò)展的使用.php

參考文檔:

https://www.php.net/manual/zh/book.dio.php

https://www.ibm.com/developerworks/cn/linux/l-cn-directio/

到此這篇關(guān)于PHP中DirectIO直操作文件擴(kuò)展的使用的文章就介紹到這了,更多相關(guān)php擴(kuò)展的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP獲取文件擴(kuò)展名的常用方法小結(jié)【五種方式】
  • php獲取文件名稱和擴(kuò)展名的方法
  • PHP獲取文件擴(kuò)展名的4種方法
  • php文件擴(kuò)展名判斷及獲取文件擴(kuò)展名的N種方法
  • PHP中獲取文件擴(kuò)展名的N種方法小結(jié)

標(biāo)簽:赤峰 溫州 金華 怒江 白城 酒泉 洛陽(yáng) 七臺(tái)河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中DirectIO操作文件擴(kuò)展的用法大全》,本文關(guān)鍵詞  PHP,中,DirectIO,操作,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中DirectIO操作文件擴(kuò)展的用法大全》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP中DirectIO操作文件擴(kuò)展的用法大全的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久精品免费在线观看| 国产一区二区在线影院| 婷婷中文字幕综合| 欧美午夜理伦三级在线观看| 亚洲码国产岛国毛片在线| av在线不卡免费看| 亚洲色图色小说| 色综合久久久久久久久久久| 一区二区三区四区乱视频| 欧美丝袜自拍制服另类| 毛片av一区二区| 国产网红主播福利一区二区| 国产精品白丝jk白祙喷水网站| 久久久综合九色合综国产精品| 岛国一区二区三区| 亚洲福中文字幕伊人影院| 日韩精品一区二区三区蜜臀| 成人综合日日夜夜| 亚洲二区在线视频| xvideos.蜜桃一区二区| 色噜噜偷拍精品综合在线| 亚洲成a人v欧美综合天堂下载| 91精品国产色综合久久不卡蜜臀| 国产一区亚洲一区| 亚洲精品国产一区二区精华液 | 有码一区二区三区| 亚洲精品在线电影| 色婷婷香蕉在线一区二区| 午夜影院久久久| 中文字幕精品—区二区四季| 欧美挠脚心视频网站| 福利电影一区二区| 日韩av网站免费在线| 国产精品久久久久久久久免费相片| 欧美影院一区二区| 国产成人aaaa| 久久99精品国产91久久来源| 亚洲欧美中日韩| 精品国产第一区二区三区观看体验 | 亚洲青青青在线视频| 91麻豆精品国产91久久久使用方法 | 欧美日韩国产综合一区二区| 91香蕉视频在线| 国产精品三级av在线播放| 欧美日韩精品电影| eeuss影院一区二区三区| 久久国产综合精品| 男女男精品视频网| 亚洲一区二区影院| 国产精品国产a| 精品福利一区二区三区| 欧美日韩精品一区二区天天拍小说| 国产成人a级片| 国产在线视频一区二区三区| 婷婷综合五月天| 亚洲一卡二卡三卡四卡 | 在线观看亚洲精品视频| 久久精品免费看| 亚洲国产欧美在线人成| 国产精品久久久久天堂| 久久午夜免费电影| 久久综合给合久久狠狠狠97色69| 日韩精品一区二区三区中文精品| 99精品久久久久久| 91免费国产在线| 欧美亚洲动漫制服丝袜| 欧美视频一区二区三区在线观看| 欧美日韩一级二级三级| 欧美男男青年gay1069videost| 欧美猛男男办公室激情| 91精品国产一区二区三区| 91精品国产高清一区二区三区蜜臀 | 成人黄色免费短视频| 久久精品免费看| 国产毛片精品视频| 福利一区在线观看| 色伊人久久综合中文字幕| 色婷婷一区二区| 欧美美女一区二区三区| 日韩一级片在线观看| 久久日韩粉嫩一区二区三区 | 国产精品美女久久久久高潮| 久久久久久麻豆| 亚洲天天做日日做天天谢日日欢 | 欧美日韩的一区二区| 欧美一级黄色片| 亚洲精品一区二区三区香蕉| 午夜视频一区在线观看| 亚洲成av人片在线观看无码| 亚洲三级理论片| 亚洲h在线观看| 国产精品羞羞答答xxdd| 在线观看免费亚洲| 久久综合色综合88| 亚洲精品高清视频在线观看| 图片区小说区区亚洲影院| 国产美女av一区二区三区| 欧美写真视频网站| 久久无码av三级| 日韩极品在线观看| 99久久精品费精品国产一区二区| 成人av在线看| 日本中文在线一区| 国产.欧美.日韩| 欧美裸体bbwbbwbbw| 国产欧美综合在线| 日本中文字幕一区二区视频| 成人一区二区三区视频| 欧美日韩mp4| 亚洲婷婷国产精品电影人久久| 日本美女一区二区三区视频| 91在线精品秘密一区二区| 亚洲精品一区二区三区精华液| 亚洲免费在线播放| 国产成人亚洲精品青草天美| 欧美精品乱码久久久久久按摩| 国产欧美日韩卡一| 麻豆91在线播放| 3d成人h动漫网站入口| 亚洲美女少妇撒尿| 成人精品高清在线| 2017欧美狠狠色| 日本aⅴ免费视频一区二区三区 | 精品综合久久久久久8888| 欧洲色大大久久| 亚洲人成7777| 99久精品国产| 久久久久久久综合狠狠综合| 美女被吸乳得到大胸91| 欧美精品丝袜久久久中文字幕| 久久精品一区二区三区av| 麻豆久久久久久| 欧美岛国在线观看| 亚洲国产综合色| 欧美日精品一区视频| 亚洲精品高清在线观看| 91啦中文在线观看| 国产三级一区二区| 国产精品1区2区3区| 久久综合色综合88| 国产成人欧美日韩在线电影| 国产精品美女久久久久久久久| 成人午夜电影久久影院| 精品盗摄一区二区三区| 国产精品1区2区3区在线观看| 久久综合视频网| 国产一区二区按摩在线观看| 久久网站最新地址| 成人午夜激情片| 国产精品大尺度| 精品视频一区三区九区| 精品亚洲成a人| 最新国产成人在线观看| 欧美视频第二页| 麻豆成人在线观看| 国产精品狼人久久影院观看方式| 色成年激情久久综合| 秋霞午夜av一区二区三区| 久久精品人人做人人综合| 色呦呦日韩精品| 喷水一区二区三区| 国产亚洲综合av| 欧美日韩一级视频| 国产成人一级电影| 亚洲成年人影院| 国产亚洲欧美中文| 欧美色爱综合网| 国内精品写真在线观看| 亚洲精品欧美综合四区| 日韩小视频在线观看专区| 成人动漫一区二区在线| 日韩电影在线免费看| 国产精品久久久久久户外露出 | 国产婷婷色一区二区三区在线| 91一区二区三区在线观看| 日韩国产精品久久| 国产精品久久久久一区| 制服丝袜av成人在线看| 97精品电影院| 国产剧情在线观看一区二区| 一区二区在线看| 26uuu国产一区二区三区| 欧洲日韩一区二区三区| 国产高清久久久久| 日一区二区三区| 中文字幕色av一区二区三区| 欧美日韩中文一区| 99re这里只有精品首页| 久久精品国产亚洲aⅴ| 午夜精品久久久久久久| 一区二区三区四区精品在线视频| 精品欧美久久久| 色老汉av一区二区三区| 不卡视频一二三四| 日韩精品一级二级 | 成人sese在线| 国内精品写真在线观看| 免费不卡在线视频| 午夜成人免费电影| 亚洲成av人**亚洲成av**|