SIARADWR: Nawr gadewch i ni plymio i mewn i'r cod dosbarthu ac edrychwch ar y cyd-destun y mae'r cod ydych yn ysgrifennu yn mynd i fod yn gweithredu. Ar ddiwedd y dydd, ydych yn mynd i weithredu y cyfan y gweinydd gwe. Ond rydym wedi darparu chi gyda'r sgerbwd cod sy'n cael rhywfaint o ymarferoldeb, yn arbennig yn ymwneud â rhwydweithio. Gadewch i gymryd golwg. Felly, hyd yma tuag at y top o'r ffeil yn griw o nodwedd profi gofynion macro. Nawr mae hyn yn unig yn nodwedd o c, lle yn ôl griw o dudalennau dyn rhaid i chi ddiffinio rhai o'r cysonion hyn i fod yn wir neu y gellir ei eilrifau penodol fel y eich bod yn cael mynediad i swyddogaethau penodol. Fel arall byddant yn cael eu heb ei ddatgan ac ni fyddwch yn cael mynediad. Felly, yr wyf wedi gwneud hyn trwy o ddarllen y tudalennau dyn. Yn awr i lawr isod, yn llinellau 15 drwy 17, rydym yn cael criw cyfan o derfynau datgan. Ac rydym wedi benthyg y rhain gan gweinydd gwe poblogaidd o'r enw Apache. Ac mae'r rhain yn unig niferoedd sy'n mynd i gapio cyfanswm nifer o bytes a ganiateir mewn gwahanol gyd-destunau ar gyfer y cais HTTP bod porwr chaniateir i anfon 'm. Nesaf, rydym yn diffinio octets. Nawr mae wythawd yn unig yw ffordd ffansi o ddweud beit, neu wyth ddarnau. Troi allan mewn a fu yn beit oedd nid o reidrwydd wyth did, felly wythawd yn wyth darnau bob amser. Felly, yn yr achos hwn rydym wedi ei fabwysiadu beth sy'n gyffredin yn y rhwydweithio byd ffonio wyth bytes mae wythawd. Yma rwyf wedi nodi y bydd octets fod yn 512, fel bod yn debyg mewn gwaith fforensig pan fyddwn yn darllen griw o bytes ar y tro, yma hefyd, rydym yn mynd i ddarllen criw o octets ar y tro. Nesaf criw cyfan o ffeiliau pennawd. Sut oedd yr wyf yn gwybod i gynnwys y rhain? Wel wyf yn syml yn darllen y dyn Tudalennau ar gyfer nifer o swyddogaethau y byddwn yn ei ddefnyddio yn y dosbarthiad hwn cod ac yn cynnwys yn y rhai Cefais fy cyfarwyddyd i. Ac yn awr mae gennym y math data. Rydym wedi datgan wythawd i fod yn torgoch. A byddwn yn gweld yn nes ymlaen mai dyna a ddefnyddir drwy gydol y cod. Ac rydym wedi datgan criw cyfan o prototeipiau, a byddwn yn cerdded yn gyflym drwy pob un o'r swyddogaethau hynny. Yn olaf, ac efallai y rhan fwyaf o bwysig i gadw mewn meddwl ar hyn o y stori, yw bod , mewn gwirionedd yn ei gyfanrwydd criw o newidynnau byd-eang ar frig y ffeil, gwraidd, Plant and, SFD, cais, ffeiliau a chorff. Yn awr yn gyffredinol, gan ddefnyddio cymaint o fyd-eang newidynnau, neu newidynnau byd-eang o gwbl, Nid yw'r arfer ôl. Ond mae'n troi allan ein bod hefyd yn defnyddio techneg a elwir yn trin signal yn ddiweddarach yn y cod, sy'n ein galluogi i canfod pan fydd y defnyddiwr yn taro rhywbeth fel CTRL C a caea i lawr y gweinydd osgeiddig. Ac er mwyn gwneud hynny osgeiddig ac mewn gwirionedd yn rhad ac am ddim i fyny cof, mae angen i ni gael mynediad at newidynnau byd-eang hyn. Ac yn awr gadewch i ni edrych ar brif, a oedd yn gyrru y cyfan o'r rhaglen hon. Yn gyntaf, ar y brig dyma ni cael newidyn rhif gwall sy'n ymddangos i beidio â fod â math, ond mae hynny'n am ei fod mewn gwirionedd a ddiffinnir yn ffeil o'r enw errno.h gwall sy'n yn cael ei gynnwys i fyny uwch. Os byddwch yn ddyn errno i mewn gwirionedd gweler y diffiniad ar gyfer y peth hyn, byddwch yn gweld bod hyn yn newidyn byd-eang arbennig sy'n yn cael ei osod gan criw cyfan o swyddogaethau nad ysgrifenedig gennym ni, ond gan yr awduron o Linux a systemau eraill i osod mewn gwirionedd mae nifer i'r newidyn pan fydd rhywbeth yn mynd o'i le fel y gallwch yn fyd-eang chyfrif i maes yr hyn a wnaeth fynd o'i le. Nawr lawr isod fe welwch newydd techneg efallai drwy ddefnyddio getopt, swyddogaeth sy'n helpu gorchymyn dosrannu dadleuon llinell fel nad ydym yn ei wneud rhaid i drafferthu amser gwastraffu figuring gwybod sut i gramadegu rhywbeth fel 8080, neu dash p, neu dash h i gael help. getopt ei hanfod yn gwneud hynny i ni. Gweler y dudalen dyn am fwy. Nesaf, rydym yn gwneud ychydig o gamgymeriadau gwirio i wneud yn siŵr bod y rhif porth o fewn yr ystod a nodir yn y fanyleb. Nesaf, rydym yn gweld galwad i'r swyddogaeth cychwyn, y mae ei diffiniad yr ydym fe yn edrych ar yn y man, ac fel ei enw yn awgrymu, mae hyn yn cychwyn y gweinydd gwe. Yma mae gennym alwad i swyddogaeth Gelwir signal sy'n dweud, os a phan fyddwch yn clywed Rheoli C o bysellfwrdd y defnyddiwr, mynd yn ei flaen a galw yn trin swyddogaeth o'r enw sy'n mynd pethau i'w glanhau yn y pen draw i fyny ac yn rhoi'r gorau i y gweinydd. Isod dyna yr hyn sy'n ymddangos i fod yn dolen ddiddiwedd, y llinell gyntaf o'r rhain effeithiol yn galw i swyddogaeth o'r enw ailosod, yr ydym ni ein hunain gweithredu yn nes ymlaen er mwyn i ryddhau rhai o'n wladwriaethau byd-eang. Ar ôl hynny yn llinell o cod sy'n amodol yn gwirio'r ffurflen gwerth cysylltiedig. Edrych Nawr cysylltu fel predicate, rhywbeth sy'n dychwelyd wir neu'n anwir. Ac mae'n ei wneud, ond mae rhywbeth arbennig yn gysylltiedig yn ei fod yn alwad blocio. Bydd yn eistedd yno ac aros hyd nes y porwr y defnyddiwr yn ceisio cysylltu â'r we hon gweinyddwr a dim ond wedyn bydd yn dychwelyd wir neu'n anwir fel ein bod yn symud ymlaen i du mewn hyn os y datganiad. Unwaith yno, yn sylwi ar y swyddogaeth hon i swyddogaeth a elwir yn dosrannu, yr ydym yn ysgrifennu, sy'n parses pob un o'r octets, pob o'r bytes dod o borwr at 'r gweinyddwr, fel y gallwn llaw chi yn ôl yn y pen draw mae gwerth at un o newidynnau byd-eang hynny y storfeydd pob un o'r bytes mewn dim ond y penawdau o hynny cais, nid oedd y corff os oedd mewn gwirionedd corff iddo. Nawr lawr islaw i ni ddechrau gramadegu penawdau hynny i dynnu is-set o'r wybodaeth ein bod yn poeni am. Yn benodol, fesul y fanyleb, rydym yn gyntaf yn awyddus i ofyn am linell, sef dim ond bod llinell gyntaf iawn bod gobeithio, yn dweud rhywbeth fel get slaes neu ryw llwybr ac yna HTTP 1.1. Rydym yn defnyddio trosiad hwn o nodwydd mewn tas wair i chwilio am neilltuol chars neu gyfeiriadau. Ac yn wir, mae yna nifer o swyddogaethau yn ein cod dosbarthu eich bod chi, hefyd, efallai yn ddefnyddiol wrth chwilio am werthoedd penodol. Yn y pen draw, rydym yn copïo'r bytes hyn mewn llinell amrywiol o'r enw, caiff yr hysbysiad, hefyd, rydym wedi dyrannu ar y pentwr drwy gyfrwng amrywiaeth maint ddynamig. Ac rydym yn ceisio fwriadol i osgoi galw malloc oherwydd eto, oherwydd Rheoli C yn cael un o nodweddion posibl y rhaglen hon, rydym yn nad ydych am i gael y cod hwn yn sydyn torri ar draws y taro defnyddiwr Rheoli C, y canlyniad o'r rhain yw y gallai nad wyf yn cael y cyfle am rywbeth am ddim Rwyf wedi malloced. Felly rwy'n ceisio defnyddio cymaint o'r pentwr yw gallaf yma. Nesaf i fyny, criw cyfan o i'r dos. Bydd y fanyleb yn draethu'n ar yn union beth sy'n ddisgwyliedig yma, ond mae'r sylwadau yn rhoi i chi awgrym o hyn sydd o'n blaenau. Rydych angen yn gyntaf i ddilysu'r llinell cais a gwneud yn siŵr ei fod yn edrych fel y manylebau gramadeg, fel petai, Dywed y dylai. Yna, mae angen i chi dynnu rhywbeth Gelwir yr ymholiad, mae'r pethau allan ar ôl marc cwestiwn, fel gwelsom gyda'n enghraifft Google wrth fynd heibio mewn paramedr HD. Yna byddwn yn concatenate gyda'n gilydd gwraidd y gweinydd gwe gyda'r llwybr dyna mewn y llinell gyntaf cais ac yn ffurfio llwybr llawn y ffeil yr ydym am edrych am. Wedi hynny, rydym yn mynd i wneud yn siŵr bod y ffeil yn bodoli ac yn ddarllenadwy. Ac yna rydym yn mynd i dynnu ei estyniad ffeil, gall y .html neu'r .php, neu ryw estyniad o'r fath dyna yn y ddiwedd y llinyn y gofynnwyd amdani. Nesaf i fyny yn ei gyfanrwydd criw o cod ysgrifenasom i mewn gwirionedd yn cynhyrchu PHP cynnwys ar gyfer chi a gynhyrchir. Yn gryno, mae hwn cod cymryd yn yr enw o'r ffeil rydych am PHP i ddehongli. Rydym yn ei throsglwyddo gan rywbeth o'r enw pibell i mewn i cyfieithydd PHP yn. Cael yn ôl yr ymateb fel pe Roedd yr ymateb ffeil ei hun. Ac yna rydym yn ailadrodd dros y ffeil yn bytes, i gyd tynnu i mewn i un byffer fel y gallwn yn y pen draw argraffwch nhw allan. Yn wir, pob un o'r rhain yn galw yma i dprintf yn ein galluogi i argraffu rhywbeth a elwir yn disgrifydd ffeil, a oedd yn yn unig yw gyfanrif sy'n cynrychioli ffeil. Debyg iawn o ran ysbryd, ond sylfaenol wahanol o ffeil pwyntydd seren. Sylwch sut y gallwch ddefnyddio cystrawen yn hoffi printf yma fel y gallaf ddeinamig mewnosod rhywbeth fel hyd am y gwerth o pennawd HTTP Gelwir Cynnwys-Hyd. Ac yn y pen draw Defnyddiais y hawl i ysgrifennu mewn gwirionedd yn swyddogaeth y corff i'r cais. Yn anffodus, dim ond rhoi ar waith cymorth ar gyfer ddynamig ffeiliau PHP a gynhyrchir. Doedden ni ddim yn gweithredu cymorth ar gyfer ffeiliau statig fel gifs, a jpegs, a CSS a HTML ffeiliau. Mae hynny, yn anffodus, yn cael ei adael i chi i ymateb i'r pwrpas cleient hyn i'w wneud. Felly, i mewn 'na fe welwch fod yna Nid yw llawer o ysbrydoliaeth o fewn y bloc, ond os ydych ychydig yn uwch i fyny ar sut aethom am ddehongli cod PHP, swyddogaethau y byddwch yn ei ddefnyddio ychydig yn wahanol. Yn wir, y gallwch ei fenthyg rhai o'r swyddogaethau efallai o'r fforensig set problem, oherwydd ar ddiwedd y dydd i gyd angen i chi wneud yma yw unwaith y byddwch yn gwybod pa ffeil agored ac ar ôl i chi ei wybod ei fod yn hyn a elwir yn Math MIME neu fath gynnwys, mae angen i chi ddarllen yn y bytes y rhai ac yn poeri rhywsut yn ôl allan. Ac yn awr ar daith o gwmpas hyn swyddogaethau eraill ffeil yn. Up gyntaf yn gysylltiedig, sydd yn syml yn dychwelyd gwir pan fydd yn clywed yn olaf cysylltiad gan ddefnyddiwr. Nesaf i fyny yw gwall. Gwall, yn y cyfamser, fel swyddogaeth yr ydym Ysgrifennodd i ymdrin â phob un o'r gwahanol 400 a statws HTTP 500 Codau efallai y byddwch am i'w hanfon yn ôl at y defnyddiwr, ynghyd â neges safonol. Nesaf i fyny yn llwyth, sef arbennig swyddogaeth swmpus, y mae eu pwrpas mewn bywyd yw darllen o ffeil seren pwyntydd y cynnwys ffeil i mewn i byffer byd-eang ein bod yn datgan yn fyd-eang uchod [? prif. ?] Mae hwn yn dipyn o gymhleth oherwydd ein rhaid i ddarllen y bytes o'r ffeil ond edrychwch ar bob iteriad a ydym i wedi eisoes taro diwedd y ffeil neu rhywbeth arall wedi mynd o'i le. Ac rydym yn defnyddio realloc i wneud yn siŵr bod beth bynnag byffer rydym yn ei ddefnyddio yn tyfu ac yn tyfu ac yn tyfu a bob amser yn aros o flaen y nifer o bytes bod angen i ni ffitio i mewn 'na. Triniwr, yn y cyfamser, mae y swyddogaeth sy'n cael Gelwir drwy gael cofrestru Rheoli C fel arwydd ein bod am i ryng-gipio. Hysbysiad yma yn trafodwr ei fod yn y pen draw galwadau stopio, sydd wrth gwrs yn atal y gweinydd gwe. Ac yn anffodus, am-edrych Nid yw yn cael ei weithredu. Yn yr ysbryd, mae hwn yn swyddogaeth yn weddol syml. O ystyried estyniad ffeil, mae angen i ddychwelyd ei fod yn MIME hyn a elwir yn math neu fath gynnwys. Ac rydym yn nodi yn y fanyleb hyn y mae'n rhaid mapio hwnnw fod. Ond mae angen i chi ei gyfieithu yn y pen draw i c cod. Nesaf i fyny yw ein swyddogaeth yn yr un modd swmpus Gelwir dosrannu, y mae eu pwrpas mewn bywyd yw darllen, nid o ffeil, ond o gysylltiad rhwydwaith. Yn benodol, darllen ac dosrannu y Cais HTTP sydd wedi dod o borwr at y gweinydd fel bod yn y pen draw, gallwn dosrannu sef dim ond y penawdau yn y cais llinell a dychwelyd y rhai i chi drwy gyfrwng byffer byd-eang sy'n rydym yn datgan uchod [? prif. ?] Ailosod, yn y cyfamser, yn swyddogaeth yr ydym yn diffinio sy'n cael elwir ailadroddol y tu mewn o brif bob tro y byddwch chi ar fin yn barod i ddechrau gwrando am gysylltiad newydd fel ein bod bob amser yn gwybod cyflwr ein newidynnau ac er mwyn i ni i wedi hefyd rhyddhau unrhyw cof bod gellid bod wedi dyrannu ar gyfer gysylltiad rhwydwaith blaenorol. Nesaf i fyny yw cychwyn, mae'r swyddogaeth yr ydym yn ysgrifennu sy'n cynnwys cyfan llawer o cod rhwydweithio yn y pen draw yn dechrau y gweinydd gwe. I fyny olaf yw swyddogaeth Gelwir stop, sy'n gwneud yn union hynny, mae'n yn atal y gweinydd gwe. Ond yn gyntaf mae'n rhyddhau unrhyw cof sy'n parhau wedi'i ddyrannu. Ond yn y pen draw yn galw allanfa heb hyd yn oed yn dychwelyd rheolaeth at ein prif swyddogaeth. Yn y pen draw, un o'r y rhan fwyaf o dechnegau pwysig wrth weithredu hyn weinydd y we yn yn mynd i fod yn dipyn o brofi a methu, cael un porwr ar agor ffenestr ar y dde ac terfynell ffenestr ar i'r chwith, y consol gweinyddwyr ffenestr, er mwyn i chi yn gallu gweld y negeseuon sy'n cael eu cael ei arddangos ar y sgrin. Ond byddai yn well yn dal i fod un rhan o dair ffenestri, ail ffenestr terfynell, lle y byddwch yn eu defnyddio Telnet, mae'r defnydd y mae ei ragnodi yn y fanyleb. Ac Telnet yn unig yw iawn rhaglen rhwydwaith syml sy'n gadael i chi esgus i fod yn porwr mewn un ffenestr tra'n siarad â'r ffenestr arall. Fel hyn, gallwch weld union yr gorchmynion testunol sydd yn dod yn ôl o'r gweinydd i gleient heb orfod procio o gwmpas datblygwr crôm yn offer mewn fel arall rhyngwyneb clunkier.