Honnan tudom, hogy hányszor jelent meg a letöltött fájlt, php
Honnan tudom, hogy hányszor jelent meg a letöltött fájlt?
Azóta, amint a helyet hozunk létre, az első és a legnyilvánvalóbb a vágy, hogy tudja, hogy van ez a legnépszerűbb. Vannak különböző funkciókat, amely megoldja ezt a problémát. Jellemzően, egy szerver, amely biztosítja az Ön számára tárhely, ad egy nagyon szerény statisztika. Ezek a statisztikai adatok közé csak a találatok száma az oldalon, és az átvitt adatok mennyiségét. De meg kell vallanom, hogy ez nem is elég. Fájlok az oldalon, és nagyon szeretném, hogy egy ötlet, amit kint van a mi letölthető.
Fontos, hogy megértsük, hogyan működik ez a számláló, és csak akkor elkezd írni kódot.
Az első dolog, amit meg kell dönteni, hogy annak szerkezete: melyik fájl lesz, és hogyan fog együttműködni. Az érthetőség kedvéért szeretném idézni az alábbi ábra.
Van néhány hely www.sayt.ru. Tegyük fel, hogy ezen az oldalon meg kell számolni, hogy hányszor letölthető könyveket. Hivatkozások könyvek a book.php fájlt. Az egyszerűség kedvéért hozzon létre egy külön könyvtárat egy számláló, ami nagyon számláló (counter.php) és szöveges dokumentumok, amelyek az adatok tárolhatók, hányszor töltötték le a megfelelő könyvet (book1.txt és book2.txt). Lehet kérdezni, miért nem használja tárolni a letöltések száma az adatbázisban? Természetesen book.txt helyettesítheti ezt a bázist, de ha szükség van speciális szoftver. Ezen kívül a szöveges fájlokat sokkal könnyebb használni, mint az adatbázisban. És várom, hogy a cikk az első helyen a kezdők számára. Kétségtelen, hogy a nagy online adatbázis használatára van szükség. Enélkül még nem tudja. Csak a több szöveges fájlokat, hogy egy ilyen nagy szám, amely kezelni őket, gyakorlatilag lehetetlen. De ez a téma egy másik cikk.
Ennek eredményeként, ennek eredményeként, amikor kinyitjuk book.php fájlt, akkor valami hasonlót kell látni a következő:
Most megpróbáljuk leírni, hogy ez a ciklus egészének működését. Első oldal tele van a referencia és a felirat - „Letöltések száma: 25”. Ahhoz, hogy a 25-ös szám, meg kell nyitnia a fájlt, ahol a tárolás (book.txt). Ha a felhasználó rákattint a linkre, a program elindul (counter.php), amely növeli a változót, hogy az 1. és írja meg, hogy egy szöveges fájlt. És így minden alkalommal.
Mint látható elméletileg nagyon egyszerű. De a fő probléma merül fel a gyakorlatban.
Tehát, térjünk át a technikai oldala a kérdés. Először közvetlenül a számláló (counter.php). Itt a kód, hogy helyezze bele.
Nos, milyen nehéz? Nézzük foglalkozni együtt.
Kezdeni, hogy meghatározzák a kód szerkezetét. Mint tudod, hogy a PHP, akkor létre kell hozni az alábbi szerkezetet:
Így hogy a program megérteni, hogy a PHP.
Mivel a letöltött több fájlt meghatározása érdekében, hogy milyen kapcsolat kattintottak, a design használják:
stb Így szelekciót végeztünk a változó $ könyvet. Az egyetlen módja annak, hogy megbizonyosodjon arról, hogy ha rákattint egy adott linkre hozzárendelve a megfelelő változó?
Ha azt szeretnénk, hogy menjen egy adott oldalon, akkor kell, hogy írja be az URL.
De az URL valójában egy hosszabb pillantást. Láttad a következő bejegyzést:
Ezeket a paramétereket lehet változó.
Rámutatva, így változó, akkor kerül át a megnyitott fájl. Ha meg kell, hogy állapítsa meg több változó, ez történik a jel „”
Így, amikor a felhasználó megnyitja ezt az oldalt, a változók hozzárendelése automatikusan, ami nagyon kényelmes. Ez a módszer az átviteli változók egy script nevű GET.
Ez az egész tervezési most lépni a kódot a számláló.
Mint már említettük, hogy tárolja a változó letöltések száma, amely egy szöveges fájlt. Tulajdonképpen az egész problémát a számláló, hogy nyissa fel, és megtudja, milyen értéket teremteni a pultnál, hogy növelje az értéket 1 és zárja be a fájlt. Ez az!
A PHP dolgozni szöveges fájlokat, ügyeljen arra, hogy hajtsa végre a következő lépéseket:
2) Kivonat az adatokat a fájlt, és szükség esetén módosítása
Egy speciális funkció, hogy megnyitja a fájlt: $ variable = fopen ( "fájlnév", "mód");
Amikor megnyitja a fájlt meg kell adni az üzemmód lehetővé kell tenni, hogy bizonyos műveleteket a fájlt, miután kinyitják. Mód, hogy be lehet állítani az alábbi táblázatban:
rezsim
Mi történik, ha a fájl létezik
Mi történik, ha a fájl nem létezik
r
csak olvasható
Lesz egy figyelmeztető üzenet
r +
Olvasás és írás
Lesz egy figyelmeztető üzenet
w
rögzítés csak
egy új fájlt hoz létre. Ha a fájl létezik, az új fájl lesz felülírni a régi
w +
Olvasás és írás
egy új fájlt hoz létre. Ha a fájl létezik, az új fájl lesz felülírni a régi
egy
Hozzáadása az adatokat a fájl
egy új fájlt hoz létre.
a +
Olvasás és hozzáadjuk az adatokat a fájl
egy új fájlt hoz létre.
Így nyitunk book.txt fájlt olvasni és módosítani az értékét. Ez létrehoz egy speciális változó $ file, ami nyitva marad fájlt.
- állományban ($ file, LOCK_EX). Egy nagyon fontos eleme. Gátolja az iratbetekintés idejére a forgatókönyvet. Képzeljük el, hogy rákattint a linkre ugyanakkor, amint két ember. Mivel a script megnyit egy fájlt írásra, esetleg nem sikerül, és a számláló csak vissza.
- $ Count = fread ($ file, 100); További beolvassa az adatokat egy megnyitott fájl $ file, és rendelje hozzá a $ count változó.
- $ Count ++; - növeli az értékét 1-re Ez egyenértékű a következő bejegyzés ($ count = $ count + 1).
- ftruncate ($ file, 0); - ezzel a paranccsal a fájl tartalma (book.txt) törlődik. És most lehet szabadon írni, hogy az új információkat. Ez az a pont sikertelen lehet, ha két egyidejű futtatását. Említettem ezt fent. De nincs semmi félelem, a fájl blokkolását.
- fwrite ($ file, $ count). Írunk az új számláló értékét.
- állományban ($ file, LOCK_UN). Most akkor kinyit a fájlt, és
Ha minden meg van írva, ne felejtsük el, hogy állítsa be a tulajdonságokat (engedély) a szöveges fájlokat (txt). Ezt meg lehet tenni, hogy FTP-kliens. Fájlok attribútumait egy 666 (rw-rw-rw).
Nos, ez minden. Próbáltam a lehető legnagyobb mértékben egyértelmű és könnyű elmagyarázni, hogy ha a telepítési folyamat letöltés számláló. Azonban, ha valami nem működik, vegye fel a kapcsolatot velem, és megpróbáljuk megoldani a problémát együtt.
Üdvözlettel, Dmitry Chengaev