[check] OOP cache class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front end developer Automotive Angular

Functie Als Senior Front end developer kom je te werken in een team van 11 developers. 9 van de 11 focussen zich op back end, welke is geschreven in Java, en 2 op de front end waarbij er gebruik wordt gemaakt van Typescript en Angular. De focus in deze rol ligt op 2 aspecten; doorontwikkeling van de eigen tooling en gebruik van de tooling t.b.v. klantprojecten. Momenteel zijn ze in de afrondende fase van een project waarbij ze het gehele verkoopproces van nieuwe auto’s anders ingeregeld hebben voor een grote dealer in Nederland. Waarbij Auto’s normaliter pas verkocht werden in

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior Developer Betty Blocks Blauwe Haven Rotterd

Functieomschrijving Voor de Politie zijn wij opzoek naar een Senior Developer Betty Blocks Blauwe Haven Rotterdam. De politieorganisatie heeft jaarlijks te maken met een aanzienlijk aantal politiemedewerkers die vanwege mentale overbelasting niet of beperkt inzetbaar zijn. De Blauwe Haven Rotterdam ondersteunt deze politiemedewerkers in hun herstel en re-integratieproces. De huidige digitale systemen van de Politie bieden onvoldoende ondersteuning in het herstel- en re-integratieproces van politiemedewerkers. Zowel voor de politiemedewerkers als voor de organisatie. Politiemedewerkers worden buitengesloten, waardoor zij eigen regie verliezen. Begeleiders kunnen de voortgang van de medewerkers niet goed monitoren. Management beschikt niet over de mogelijkheid trends te signaleren

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Software developer - senior

Functie omschrijving Voor een echt softwarebedrijf in omgeving Gouda zijn wij op zoek naar versterking voor de afdeling Software Development! Ben jij op zoek naar een werkgever waar meerdere software developers werken aan interessante projecten? Ben jij op zoek naar een werkgever waar je onderdeel wordt van een team dat echt passie heeft voor het ontwikkelen van software? Dan ben je hier aan het juiste adres! Als softwareontwikkelaar kom je terecht bij een onafhankelijk, door kwaliteit gedreven, doortastend en daarbij op een Agile wijze werkend bedrijf. Ben jij een expert in het vertalen van Componenten van Functionaliteit naar Business lagen?

Bekijk vacature »

PHP developer (Symfony, Doctrine)

Functie Als PHP developer wordt er een hoge mate van zelfstandigheid verwacht, maar ook dat je goed opereert in een team waar kennis wordt gedeeld en dingen als codereviews erg veel voorkomen. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

Team Lead/ Lead developer gezocht (Hands-on, PHP,

Functie Als Team Lead ben je de leider van één van de ontwikkelteams binnen de organisatie. Je leidt als lead developer een goed draaiend team dat werkt aan complexe en duurzame applicaties en API’s. Vanuit je kennis en ervaring ben je in staat het grote plaatje te blijven overzien, en kritisch mee te denken over bijvoorbeeld de architectuur, maar ook de algehele aanpak binnen het project. Je laat je team niet alleen technisch goed functioneren maar ben ook betrokken bij het menselijke aspect. Zo weet jij je collega’s te motiveren en begeleiden in hun dagelijkse werk. Buiten het team ben

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.