Loading:


    Cache strony, optymalizacja i poprawienie wydajności serwisu
    Teraz utworzymy katalog naszcach w głownym katalogu witryny i nadmy mu prawa zapisu 777

    Kiedy katalog jest już gotowy możemy przejść do kodu php który będzie sprawdzał czy istnieje cache tej strony jeśli tak to zaciągnie dane z pliku, jeśli nie to wygeneruje to normalnie poprzez kod  zapytanie do bazy.

    Listing poniżej pokazuje gotowy przykładowy kod, można go dowolnie rozwinąć i rozbudować wszystko zależy od was.



    Dalsza czê¶æ: 1 2
    Napisz Artyku³

    Listing


    <?php
    // pobieramy adres podstrony i kodujemy w md5 wygenerowany hash będzie nazwą pliku cache dla tej podstrony
    $hashCache = $_SERVER['REQUEST_URI'];
    $hashCache = hash("md5",$hashCache);

    //Sprawdzamy czy istnieje plik cache dla tej podstrony
    if(file_exists('naszcache/'.$hashCache.'.txt')){
    //jeśli istnieje sprawdzamy czy nie jest zbyt stary nasz cache bedzie sie aktualizował co 1h
    $utworzony = getdate(filemtime('naszcache/'.$hashCache.'.txt'));//pobranie tablicy z  datą utworzenia pliku
    $utworzony = $utworzony['year'].'-'.$utworzony['mon'].'-'.$utworzony['mday'].' '.$utworzony['hours'].':'.$utworzony['minutes'].':'.$utworzony['seconds']; // tutal tworzymy date w formie rok-miesiac-dzien godzina:minuta:sekunda
    $dzisiaj = date("Y-m-d H:i:s"); // pobieramy aktulany czas
    $start = strtotime($dzisiaj); // czas obecny w mikro sekundach
    $koniec = strtotime($utworzony); // czas utworzonego pliku w sekundach
    $roznica=  $start-$koniec;
            if($roznica<3600){ // jeśli różniaca między datą utworzenia a datą obecną jest mniejsza niż 3600 sekund (1h) to zaciągamy dane    z pliku cache
            $fp = fopen('naszcache/'.$hashCache.'.txt', 'r');  // otwieramy plik
            $dane = fread($fp, filesize('naszcache/'.$hashCache.'.txt')); // odczytujemy dane
            echo $dane;     // wyświetlamy je
            fclose($fp); //zamekamy plik
            exit(); // przerywamy wykonywanie kodu
            }
    }else{ // jeśli plik jest stary lub nie istnieje zostanie wykonan ta częśc kodu
    function lacz_bd()
    {  
      $db = new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');  
      if (! $db)
              return false;
      $db->autocommit(TRUE);
      return $db;
    }
    //teraz pobierzemy nasze fikcyjne dane z bazy i zapiszemy kod wynikowy do zmiennej $zawartosc

    //połaczenie z bazą
    $db = lacz_bd();
    //zapytanie sql do bazy określające jakie dane mają zostać pobrane
    $zapytanie = "select imie, nazwisko from pracownicy";
    //pobranie wyniku zapytania
    $wynik = $db->query($zapytanie);
    //obliczanie ilości rekordów
    $ile_znalezionych = $wynik->num_rows;
    //rozpoczynamy budowanie tabeli dla naszych danych
    $zawartosc ='<table>';
    $zawartosc .='<tr><td>Imie</td><td>Nazwisko</td></tr>';
    //pętla po rekordach z bazy
    for ($i=0; $i <$ile_znalezionych; $i++)
            {
                    $wiersz = $wynik->fetch_assoc();
                    $zawartosc .='<tr>';
                    $zawartosc .='<td>'.$wiersz['imie'].'</td>';
                    $zawartosc .='<td>'.$wiersz['nazwisko'].'</td>';
                    $zawartosc .='</tr>';
            }
    $zawartosc .='</table>';

    // teraz kiedy zmienna $zawartosc zawiera HTML z danymi z bazy możemy je wyświetlić użytkownikowi<br>
    echo $zawartosc;
    //teraz czas na zapis pliku cache bo po co następny user ma generować to samo zapytanie i przetwarzać ten sam kod :)
    if(!file_exists('naszcache/'.$hashCache.'.txt')){ //sprawdzamy czy plik nie istnieje jeśli tak to zapisujemy nowy
            $fp = fopen('naszcache/'.$hashCache.'.txt', 'x+');
            fwrite($fp, $zawartosc);
            fclose($fp);
    }
    if(file_exists('naszcache/'.$hashCache.'.txt')){
            if($roznica>3600){
            unlink('naszcache/'.$hashCache.'.txt'); // usuwam stary plik
            }
    }
    ?>




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
    W tym kodzie jest malutki błąd, przed ?> powinno być jeszcze jedno } :)
    autor: :) | 429 | 2009-08-22 12:07:48


    Wcale, że nie. Kod jest napisany poprawnie i żadnych nawiasów klamrowych nie brakuje. Sprawdź jeszcze raz.
    autor: Divix | 430 | 2009-08-22 13:05:02


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors