[check] OOP cache class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

(Lead) PHP Software Developer

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een PHP software developer met een aantal jaar werkervaring. Je krijgt een plek in een klein team met 2 andere software developers. Wil jij graag werken met de nieuwste technieken bij een bedrijf waar jij de lead gaat nemen in de verder ontwikkeling en modernisering van een eigen software pakket? Dan ben je hier aan het juiste adres! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "in-house" ontwikkelde multimedia platform. Je neemt de lead in

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Front-End React Developer

Als Front-End React Developer verbeter je de user experience van onze eigen webapplicaties voor onze collega's binnen Coolblue. Wat doe je als Front-End React Developer bij Coolblue? Als Front-end React Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten met React.js. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end React Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop

Bekijk vacature »

Front-end (Angular) developer

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een Front-end (Angular) developer. Het it-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn dus op zoek naar professionals die autonoom en gedisciplineerd aan de slag gaan, en bij aanvang als enige developer met hun Front-end applicaties aan de slag gaat. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »
Roy

roy

31/12/2009 16:45:00
Quote Anchor link
Hoi,

Ik ben een beetje bezig geweest met maken van cache classe.
hebben jullie nog opmerkingen/ tips over deze classes?

CacheContoller:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
class CacheController {
    private $sCacheDir;
    private $sCacheIndex;

    public function __construct($pDir = null) {
        $this->sCacheDir = ($pDir == null) ? './cache' : $pDir;
        $this->sCacheIndex = $this->sCacheDir.'/cache.index';
    }


    /**
     * Function readIndex.
     * This function read the index file. The function unserialize it and return the Array.
     * If there is no index file he return a blank Array
     */

    private function readIndex() {
        if(file_exists($this->sCacheIndex) && filesize($this->sCacheIndex) > 0) {
            $h=fopen($this->sCacheIndex,'r');
            $c=fread($h, filesize($this->sCacheIndex));
            fclose($h);
            $s = (strlen($c)>0)? unserialize($c) : array();
            return $s;
        }

        return array();
    }

    /**
     * Function set.
     * This function make the cache file.
     * The expire time is in seconds. if you want 1 hour, than you make param $pTime 3600.
     * @return boolean TRUE on success, or FALSE on error
     */

    public function set($pVar, $pId, $pTime, $pCategory = null) {
        $c = self::readIndex();
        $scalar = is_scalar($pVar);
        $c[md5($pId)] = array(
            'scalar'=>$scalar,
            'category'=>$pCategory,
            'expire_time'=>time() + $pTime
        );
        // make the cache file
        $cache_content = $scalar ? $pVar : serialize($pVar);
        $h=fopen($this->sCacheDir.'/'.md5($pId).'.cache','w');
        if(!fwrite($h,$cache_content)) return false;
        fclose($h);
        //build or make the index file.
        $c=serialize($c);
        $h=fopen($this->sCacheIndex, 'w');
        if(!fwrite($h,$c)) return false;
        fclose($h);

        return true;
    }

    /**
     * Function read.
     * This function reads the cache file if it exists.
     * @return contents of the cache file. if not exists or on failure, returns FALSE.
     */

    public function read($pKey) {
        if(!file_exists($this->sCacheDir.'/'.md5($pKey).'.cache') || filesize($this->sCacheDir.'/'.md5($pKey).'.cache') <= 0) return false;
        $c = self::readIndex();
        if (!isset($c[md5($pKey)])) return false;
        if ($c[md5($pKey)]['expire_time'] < time()) {
            $h = fopen($this->sCacheDir.'/'.md5($pKey).'.cache','r');
            $content = fread($h, filesize($this->sCacheDir.'/'.md5($pKey).'.cache'));
            fclose($h);
            return ($c[md5($pKey)]['scalar'])? $content : unserialize($content);
        }

        return false;
    }
}

?>

GarbageCollector:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
class GarbageCollector{
    private $sCacheDir;
    private $sCacheIndex;

    public function __construct($pDir = null) {
        $this->sCacheDir = ($pDir == null) ? './cache' : $pDir;
        $this->sCacheIndex = $this->sCacheDir.'/cache.index';
    }


    /**
     * Function readIndex.
     * This function read the index file. The function unserialize it and return the Array.
     * If there is no index file he return a blank Array
     */

    private function readIndex() {
        if(file_exists($this->sCacheIndex) && filesize($this->sCacheIndex) > 0) {
            $h=fopen($this->sCacheIndex,'r');
            $c=fread($h, filesize($this->sCacheIndex));
            fclose($h);
            $s = (strlen($c)>0)? unserialize($c) : array();
            return $s;
        }

        return array();
    }


    /**
     * Function clearAllCache.
     * **WARNING** This function remove all the cache files in the directory.
     * @return boolean TRUE on success, or FALSE on error
     */

    public function clearAllCache() {
        $dirCache = opendir($this->sCacheDir);
        while(false !== ($file = readdir($dirCache))) {
            if($file != "." && $file != ".." && $this->sCacheDir.'/'.$file != $this->sCacheIndex) {
                chmod($this->sCacheDir.'/'.$file, 0777);
                if(!is_dir($this->sCacheDir.'/'.$file)) {
                    if(!unlink($this->sCacheDir.'/'.$file)) return false;
                }
            }
        }

        closedir($dirCache);
        $h = fopen($this->sCacheIndex, 'w');
        if(!fwrite($h,'')) return false;
        fclose($h);
        return true;
    }

    /**
     * Function clearCategory.
     * This function remove all the cache files with a specific category.
     * @return boolean TRUE on success, or FALSE on error
     */

    public function clearCategory($pCategory) {
        $c = parent::readIndex();
        foreach($c as $key=>$value) {
            if ($value['category'] == $pCategory) {
                 if(!unlink($this->sCacheDir.'/'.$key.'.cache')) return false;
                unset($c[$key]);
            }
        }

        $c=serialize($c);
        $h = fopen($this->sCacheIndex, 'w');
        if(!fwrite($h,$c)) return false;
        fclose($h);
        return true;
    }

    /**
     * Function clearOverTime.
     * This function remove all the cache files that are over time.
     * @return boolean TRUE on success, or FALSE on error
     */

    public function clearOverTime() {
        $c = parent::readIndex();
        foreach($c as $key=>$value) {
            if ($value['expire_time'] < time()) {
                if(!unlink($this->sCacheDir.'/'.$key.'.cache')) return false;
                unset($c[$key]);
            }
        }

        $c=serialize($c);
        $h = fopen($this->sCacheIndex, 'w');
        if(!fwrite($h,$c)) return false;
        fclose($h);
        return true;
    }
}

?>

De cacheContoller zorgt voor het aanmaken/updaten en lezen van de cache files.
De GabageCollector zorgt ervoor dat bepaalde cache files ook echt verwijderd worden van de server.

alvast bedankt.

Groetjes,
Roy
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.