[oop] object cachen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

C# Ontwikkelaar

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn 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 je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze klanten. Geen werkdag is hetzelfde, je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Arval en de Politie. Werken bij Sogeti Nieuwe ontwikkelingen volgen we op de voet en delen we binnen de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Java Developer

Dit ga je doen Je ontwikkelt innovatieve, maatschappelijk belangrijke applicaties; Je implementeert nieuwe features; Je gaat in gesprek met eindgebruikers en designers om de applicaties continu te finetunen; Je draait mee in een professionele Agile/Scrum omgeving. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de omgeving van Amsterdam. Ze staan zeer goed bekend in de markt door hun innovatieve dienstverlening op IT gebied en hun gepassioneerde werknemers. Voor hun inspanningen op het gebied van IT hebben ze meerdere prijzen gewonnen! Onze klant is onderdeel van een Corporate werkgever en heeft zelf 300 mensen in dienst. Om

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »
Ozzie PHP

Ozzie PHP

20/04/2013 16:07:31
Quote Anchor link
Hallo mensen,

Stel we hebben een object (bijv. een service container) en bij ieder request moet dat gevuld worden met dezelfde initiële data. Schematisch krijg je dan zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$config_file
= yaml_parse_file('/pad/naar/configbestand.yml');
$container = new Container();
$container->loadArgs($config_file['args']);
$container->loadServ($config_file['serv']);
?>

Is het nu mogelijk om als deze handelingen zijn gedaan het object te cachen in een cache bestand? En als dan de volgende keer de pagina wordt aangeroepen er gekeken wordt of er een cache bestand aanwezig is, en zo ja dan gebruik ik de gecachete versie en hoeven alle bovengenoemde stappen niet meer te worden uitgevoerd?

Kan dat, en zo ja hoe?
Gewijzigd op 20/04/2013 16:09:44 door Ozzie PHP
 
PHP hulp

PHP hulp

25/04/2024 07:18:57
 
Jan Koehoorn

Jan Koehoorn

20/04/2013 16:35:58
Quote Anchor link
Je zou memcached kunnen overwegen.
 
Ozzie PHP

Ozzie PHP

20/04/2013 16:45:21
Quote Anchor link
Nou, ik wil eigenlijk gewoon zelf iets maken. Maar de vraag is eigenlijk het mogelijk is wat ik wil.
 
Wouter J

Wouter J

20/04/2013 17:08:13
Quote Anchor link
Meerdere mogelijkheden:
1) Gebruik gewoon serialize en deserialize
2) Maak __sleep en __wakeup methods of gebruik de serializable interface. Hiermee hoef je dus niet de hele class te cachen, maar alleen de variabele data (bijv. de property die alle services en parameters vasthoudt)
3) Gebruik een library als JmsSerializer. Op die manier kun je heel goed bepalen wat je wel en niet gaat serializen, op welke manier en in welke taal (yaml, xml, json, ect.)
 
Ozzie PHP

Ozzie PHP

20/04/2013 17:16:01
Quote Anchor link
Hoi Wouter,

Thanks voor je reactie.

Mijn voorkeur gaat dan uit naar optie 1 of 2. Slaat optie 1 ook alle properties op? En kun je dan gewoon zeggen:

$container = unserialize(file_get_contents('/pad/naar/gecachteversie'));

Wat bedoel je bij optie 2 met "Hiermee hoef je dus niet de hele class te cachen..."?
Bedoel je dat bij optie 1 ook alle methods worden gecachet? In dat geval is optie 2 wellicht handiger en dat ik dan alleen de properties cache... heb je wellicht een heel simpel voorbeeldje voor me hoe optie 2 in z'n werk gaat? De bedoeling is dus dat ik niet telkens alle configuratie hoef in te lezen en te setten, maar dat ik direct een gecachet object terugkrijg. Ik hoop dat het een beetje duidelijk is wat ik bedoel.
 
Wouter J

Wouter J

20/04/2013 17:31:13
Quote Anchor link
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
<?php
class Container implements \Serializable
{
    private $services;
    private $parameters;

    public function set($id, $factory)
    { ... }


    public function get($id)
    { ... }


    // ...

    public function serialize()
    {

        return serialize(array(
            'services'   => $this->services,
            'parameters' => $this->parameters,
        ));
    }


    public function unserialize($data)
    {

        $data = unserialize($data);

        $this->services = $data['services'];
        $this->parameters = $data['parameters'];
    }
}


// first time
$container = new Container();
// ... configure the container

file_set_contents(__DIR__.'/cache/di/container.php.inc', serialize($container));

// next time
$container = unserialize(file_get_contents(__DIR__.'/cache/di/container.php.inc'));
?>


Nu is dit nog lekker simpel, mocht je wat complexere klassen krijgen wordt JmsSerializer erg interessant.
Gewijzigd op 20/04/2013 17:32:08 door Wouter J
 
Ozzie PHP

Ozzie PHP

20/04/2013 17:39:50
Quote Anchor link
Thanks Wouter, ziet er goed uit :-)

De methods serialize en unserialize horen die bij Serializable?

Nu heb jij hier een serialize en unserialize method gebruikt, maar wat gebeurt er als je die niet gebruikt? Wat is het verschil als je die 2 methods zou weglaten? Dus op deze manier:

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
<?php
class Container
{
    private $services;
    private $parameters;

    public function set($id, $factory)
    { ... }


    public function get($id)
    { ... }


    // ...

}

// first time
$container = new Container();
// ... configure the container

file_set_contents(__DIR__.'/cache/di/container.php.inc', serialize($container));

// next time
$container = unserialize(file_get_contents(__DIR__.'/cache/di/container.php.inc'));
?>


Offtopic:

Waarom gebruik je als extensie .php.inc ?
 
Wouter J

Wouter J

24/04/2013 19:12:03
Quote Anchor link
Quote:
De methods serialize en unserialize horen die bij Serializable?

Jep

Quote:
Nu heb jij hier een serialize en unserialize method gebruikt, maar wat gebeurt er als je die niet gebruikt? Wat is het verschil als je die 2 methods zou weglaten?

Ga ik een heel gemeen antwoord op geven: Test het eens zelf. Ik zou het echt niet weten. Ik heb zo mijn gevoelens dat de Serializable methods niet voor niks bestaan en dus waarschijnlijk ruimte beperken, maar ik zou het niet durven zeggen.

Quote:
Waarom gebruik je als extensie .php.inc ?

Ik moest even snel een extensie bedenken. php.inc gebruik ik altijd als het een 'niet echt' PHP bestand is. Bijv. een autoload.php.inc bestand waarin alle klassen staan.
 
Ozzie PHP

Ozzie PHP

24/04/2013 20:25:01
Quote Anchor link
Wouter J op 24/04/2013 19:12:03:
Ga ik een heel gemeen antwoord op geven: Test het eens zelf. Ik zou het echt niet weten. Ik heb zo mijn gevoelens dat de Serializable methods niet voor niks bestaan en dus waarschijnlijk ruimte beperken, maar ik zou het niet durven zeggen.

Ik ben inmiddels zover dat ik het daadwerkelijk heb kunnen testen. Die methods heb je niet nodig tenzij je iets specifieks wilt doen op het moment dat het object wordt geserialized of geunserialized. Als je de methods niet gebruikt werkt het prima :)
 
Wouter J

Wouter J

24/04/2013 22:28:57
Quote Anchor link
In toch zit er een verschil in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
C:9:"Container":91:{a:2:{s:8:"services";a:1:{s:3:"foo";s:3:"bar";}s:10:"parameters";a:1:{s:3:"baz";s:3:"bar";}}}
O:9:"Container":2:{s:19:"Containerservices";a:1:{s:3:"foo";s:3:"bar";}s:21:"Containerparameters";a:1:{s:3:"baz";s:3:"bar";}}

Eerste is met Serializable, 2e zonder. Je ziet dat de 1e alleen een array serialized en de 2e het hele object. De eerste is kleiner, wat bij het cachen van veel klassen dus echt een verschil gaat uitmaken.
 
Ozzie PHP

Ozzie PHP

24/04/2013 22:34:29
Quote Anchor link
Wouter, thanks. Ik zie alleen niet echt (veel) verschil, behalve dat de 2e langer is omdat daar ipv services en parameters Containerservices en Containerparameters staat. Kun je eens uitleggen wat je bedoelt, want ik denk dat ik ergens overheen aan het kijken ben.
 
Wouter J

Wouter J

25/04/2013 15:50:03
Quote Anchor link
Het eerste verschil zit hem al in de eerste letter, de letter die het type aangeeft. In het eerste geval is dit een C (class) en in het 2e geval is dit een O (object).
Dat betekend dus dat de 2e een instance vasthoud en de 1e alleen maar een classname.

Dan gaan we verder en krijgen we de lengte van de classname en de classname zelf. Vervolgens krijgen we de properties. Hierin zien we dat in het 1e geval een array met 2 elementen± services en parameters wordt opgeslagen. In het 2e geval worden er 4 dingen op geslagen: een string met de property naam en zijn value en dat 2 keer.

In het kort komt het er dus op neer dat het 2e geval de hele klasse opslaat en het 1e geval alleen enkele belangrijke gegevens (welke belangrijk zijn bepaal je in de serialize method).

Denk nu bijv. aan een Container klasse die ook shared services ondersteund (en dat is elke Container klasse). Die wil je niet cachen. Dan krijgen we een probleem met de 2e methode, omdat we dan alles opslaan, dus ook deze shared services. In het 1e geval kunnen we deze gewoon uitsluiten van het serializen.
 
Ozzie PHP

Ozzie PHP

25/04/2013 16:44:27
Quote Anchor link
Hmmm, oké... ik snap ongeveer wat je bedoelt, maar in de situatie zoals die bij mij is, vind ik de 2e situatie juist wel handig. Maar ik kan me nu voorstellen dat in bepaalde situaties de 1e optie inderdaad handiger is. Thanks.
 



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.