PHP socket初探 --- 關(guān)于IO的一些枯燥理論

要想更好了解socket編程裁良,有一個(gè)不可繞過的環(huán)節(jié)就是IO.
在Linux中,一切皆文件.實(shí)際上要文件干啥腾夯?不就是讀寫么颊埃?所以,這句話本質(zhì)就是”IO才是王道”.用php的fopen打開文件關(guān)閉文件讀讀寫寫俯在,這叫本地文件IO.在socket編程中竟秫,本質(zhì)就是網(wǎng)絡(luò)IO.
所以,在開始進(jìn)一步的socket編程前跷乐,我們必須先從概念上認(rèn)識(shí)好IO.
如果到這里你還對(duì)IO沒啥概念肥败,那么我就通過幾個(gè)詞來給你一個(gè)大概的印象:同步,異步愕提,阻塞馒稍,非阻塞,甚至是同步阻塞浅侨,同步非阻塞纽谒,異步阻塞,異步非阻塞.是不是暈了如输?截至到目前為止鼓黔,你可以簡(jiǎn)單地認(rèn)為只要搞明白這幾個(gè)名詞的含義以及區(qū)別,就算弄明白IO了不见,至少了可以繼續(xù)往下看了.先機(jī)械記憶一波兒:IO分為兩大種澳化,同步和異步.

同步IO:
  • 阻塞IO
  • 非阻塞IO
  • IO多路復(fù)用(包括select,poll稳吮,epoll三種)
  • 信號(hào)驅(qū)動(dòng)IO
異步IO

那么如何理解區(qū)別這幾個(gè)概念呢缎谷?尤其是同步和阻塞,異步和非阻塞灶似,看起來就是一樣的.我先舉個(gè)例子結(jié)合自己的理解來說明一下:

  1. 你去甜在心饅頭店買太極饅頭列林,阿梅說:"暫時(shí)沒瑞你,正在蒸呢,你自己看著點(diǎn)兒O3铡".于是你就站在旁邊只等饅頭.此時(shí)的你者甲,是阻塞的是同步的.阻塞表現(xiàn)在你除了等饅頭润梯,別的什么都不做了.同步表現(xiàn)在等饅頭的過程中过牙,阿梅不提供通知服務(wù),你不得不自己要等到"饅頭出爐"的消息.
  2. 你去甜在心饅頭店買太極饅頭纺铭,阿梅說:"暫時(shí)沒,正在蒸呢刀疙,你自己看著點(diǎn)兒2芭狻".于是你就站在旁邊發(fā)微信,然后問一句:"好了沒谦秧?"竟纳,然后發(fā)QQ,然后再問一句:"好了沒疚鲤?".此時(shí)的你锥累,是非阻塞的是同步的.非阻塞表現(xiàn)在你除了等饅頭集歇,自己還干干別的時(shí)不時(shí)會(huì)主動(dòng)問問饅頭好沒好.同步表現(xiàn)在等饅頭的過程中桶略,阿梅不提供通知服務(wù),你不得不自己要等到"饅頭出爐"的消息.
  3. 你去甜在心饅頭店買太極饅頭诲宇,阿梅說:"暫時(shí)沒际歼,正在蒸呢,蒸好了我打電話告訴你9美丁".但你依然站在旁邊只等饅頭鹅心,此時(shí)的你,是阻塞的纺荧,是異步的.阻塞表現(xiàn)在你除了等饅頭旭愧,別的什么都不做了.異步表現(xiàn)在等饅頭的過程中,阿梅提供電話通知"饅頭出爐"的消息宙暇,你只需要等阿梅的電話.
  4. 你去甜在心饅頭店買太極饅頭输枯,阿梅說:"暫時(shí)沒,正在蒸呢客给,蒸好了我打電話告訴你S醚骸".于是你就走了,去買了雙新球鞋靶剑,看了看武館蜻拨,總之池充,從此不再過問饅頭的事情,一心只等阿梅電話.此時(shí)的你缎讼,是非阻塞的收夸,是異步的.非阻塞表現(xiàn)在你除了等饅頭,自己還干干別的時(shí)不時(shí)會(huì)主動(dòng)問問饅頭好沒好.異步表現(xiàn)在等饅頭的過程中血崭,阿梅提供電話通知"饅頭出爐"的消息卧惜,你只需要等阿梅的電話.

如果你仔細(xì)品過上面案例中的每一個(gè)字,你就能慢慢體會(huì)到之所以異步和非阻塞夹纫,同步和阻塞容易混淆咽瓷,僅僅是因?yàn)槎叩谋憩F(xiàn)形式稍微有點(diǎn)兒相似而已.
阻塞和非阻塞關(guān)注的是:在等饅頭的過程中,你在干啥.
同步和異步關(guān)注的是:等饅頭這件事舰讹,你是一直等到"饅頭出爐"的結(jié)果茅姜,還是立即跑路等阿梅告訴你的"饅頭出爐".重點(diǎn)的是你是如何得知"饅頭出爐"的.所以現(xiàn)實(shí)世界中,最傻的人才會(huì)采用異步阻塞的IO方式去寫程序.其余三種方式月匣,更多的人都會(huì)選擇同步阻塞或者異步非阻塞.同步非阻塞最大的問題在于钻洒,你需要不斷在各個(gè)任務(wù)中忙碌著,導(dǎo)致你的大腦混亂锄开,非常累.

注:文章來源于網(wǎng)絡(luò)素标,如有侵權(quán)請(qǐng)告知?jiǎng)h除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萍悴,一起剝皮案震驚了整個(gè)濱河市头遭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌退腥,老刑警劉巖任岸,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異狡刘,居然都是意外死亡享潜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門嗅蔬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剑按,“玉大人,你說我怎么就攤上這事澜术∫蘸” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鸟废,是天一觀的道長(zhǎng)猜敢。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么缩擂? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任鼠冕,我火速辦了婚禮,結(jié)果婚禮上胯盯,老公的妹妹穿的比我還像新娘懈费。我一直安慰自己,他們只是感情好博脑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布憎乙。 她就那樣靜靜地躺著,像睡著了一般叉趣。 火紅的嫁衣襯著肌膚如雪泞边。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天疗杉,我揣著相機(jī)與錄音繁堡,去河邊找鬼。 笑死乡数,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闻牡。 我是一名探鬼主播净赴,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼罩润!你這毒婦竟也來了玖翅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤割以,失蹤者是張志新(化名)和其女友劉穎金度,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體严沥,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猜极,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了消玄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跟伏。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翩瓜,靈堂內(nèi)的尸體忽然破棺而出受扳,到底是詐尸還是另有隱情,我是刑警寧澤兔跌,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布勘高,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏华望。R本人自食惡果不足惜蕊蝗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望立美。 院中可真熱鬧匿又,春花似錦、人聲如沸建蹄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洞慎。三九已至痛单,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間劲腿,已是汗流浹背旭绒。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焦人,地道東北人挥吵。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像花椭,于是被迫代替她去往敵國(guó)和親忽匈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容