Pāriet uz galveno saturu

Failu piekļuves wraperis caur PHP - kā efektīvāk?

Labadiena.

Šodien veiksim salīdzinošo testu dažādām metodēm, ar kuru palīdzību var veikt failu piekļuves wrappošanu. Respektīvi, ja jums ir fails, kuram piekļuvi nepieciešams kontrolēt, un to darīsiet ar php, tad šeit uzzināsiet kā to var darīt un ar kādiem rezultātiem.

Testam izmantosim serveri ar Gentoo operētāj sistēmu. Fails atradīsies uz ext3 formatētas failu sistēmas, turpat būs arī mūsu testa programma. Tagad par pašu testa metodoloģiju:

Lai veiktu testus, izveidosim elementāru skriptu, kas izmantos dažādas metodes, lai veiktu faila satura pārsūtīšanu lietotājam. Darbības izpildes laiku kontrolēsim ar "time" komandu. Tagad par veidiem, kādi ir pieejami dotā uzdevuma realizācijai:

1) fopen
2) file_get_contents
3) passthru

Tālāk, izveidojam skriptu, kas, efektīvākas testēšanas nolūkos, 100 reizes pēc kārtas atgriež "aizsargāto" failu, izmantojot kādu no metodēm. Iesākumam, sāksim ar vienu reizi. Testa faila izmērs ir 5700772 baiti.



Kā redzam, visefektīvākā ir bijusi metode, izmantojot file_get_contents funkciju un visnefektīvākā ir bijusi sekvenciālā lasīšāna ar fgets no fopen atvērtā faila. Pēdējā neizmantoja satura buferošanu, bet drukāja kolīdz tika ielasīts gabaliņš. Tas izskaidro ievērojami dārgāko procedūru.

Tagad aplūkosim rezultātus 100 iterāciju gadījumā:



Secinājums? Arī 100 iterāciju tests uzrāda, ka nebūtu ieteicams izmantot fopen, bet tā vietā varam izmantot vai nu file_get_contents vai arī passthru. Abām pēdējām rezultāti ir ļoti līdzīgi. passthru būs veselīgāk lietot par file_get_contents tādā gadījumā, ja jums ir jāpārsūta ļoti lieti atmiņas daudzumi, jo file_get_contents vispirms datus ielādēs atmiņā, kas PHP skriptam ir diezgan limitēta. Passthru savukārt faila saturu pa taisno nosūtīs uz stdout strīmu.

Ja ir citi novērojumi, padalieties komentāros. Cerams, ka noderēja.

Komentāri

  1. Nevajag jau lietot fgets. fgets dara papildu darbu - meklē failā, kur beidzas rinda. Pamēģīni fread - tam vajadzētu darboties ātrāk, jo tas vienkārši lasa failu.

    AtbildētDzēst
  2. būs vēlāk papildinājums šim rakstam ar citām metodem failu piekļuves tiesību kontrolei. šīs bija vienkāršākās metodes, iesākumam.

    AtbildētDzēst

Ierakstīt komentāru

Šī emuāra populārākās ziņas

Valsts iepirkumi EIS sistēmā 2018. gada augustā - kur pazūd nodokļu maksātāju nauda.

Tā kā ar VARAM zaļo gaismu ir uztapis valsts atvērto datu portāls , tad rekur neliels ieskats vienā datu kopā - EIS iepirkumi 2018. gada augustā: Kā redzams, pirmajā vietā ir Aizsardzības Ministrija ar 824k EUR iepirkumiem un top piegādātājs ir iPRO SIA ar 924k EUR. Šo un vēl visu citu vari izpētīt ZoomCharts interaktīvajā reportā (spied uz pīragiem, un grupēt pēc, vai izmanto full-text meklētāju). Man, piemēram, kliedzošs, šķita Rēzeknes Mākslas un dizaina vidusskolas iepirktais 21.5" iMac par 6k EUR + PVN. Interesanti, kā viņi pamatos šo pirkumu. Ja šāda analīze Tev patīk, raksti komentāru un taisīšu biežāk un arī par citiem datiem. Papildināts : Šeit arī parādījās vēlviena problēma - datu kvalitāte, PVN un kvalitatīvais skaits datu tabulā ir nepareizās vietās, kas radījā maldīgu priekšstatu par pirkumu. Tātad Rēzeknes Mākslas un dizaina vidusskola nopirka 5 gab 21.5" iMac nevis vienu - tas jau izklausās daudz ticamāk. Taču joprojām būtu interesanti dzirdēt p