PHP Timer Object

Door Storeman storeman, 16 jaar geleden, 4.274x bekeken

Er zijn veel manieren om de parsetime van je script te bepalen. Ik vind echter het mooiste om gebruik te maken van een object. Ik heb dan ook een timer object geschreven, welke een aantal functies bezit om de parsetime van je script te meten.

De meeste functies zullen voor zichzelf wijzen. De timer wordt automatisch gestart bij het initieren van het object. Het object heeft de mogelijkheid om data naar een file te loggen. Dit bestand zal voor elke unieke url een nieuwe regel maken. Deze regel heeft de volgende structuur:

URL : AANTAL REQUESTS : GEMIDDELDE PARSETIME PER REQUEST


Ik liep echter ook tegen het probleem aan dat je soms wilt weten hoe lang je script over bepaalde stukken doet. Hiervoor heb ik een extra object ontwikkeld dat gebruik maakt van de DIV_TIMER class. Dit tweede object verzameld eigenlijk wat data en kan dat leuk laten zien, niet echt bijzonder, wel handig

Changelog
+ 2007-07-23: Functie toegevoegd om filename te setten, filename bij initializeren null. Tevens de functie parse vervallen en vervangen door parse_as_htmlcomment. Ook de mogelijkheid om alle punten op te vragen als array is nu mogelijk.

Voorbeeld: http://phphulp.storeman.nl/timer/voorbeeld.php

Gesponsorde koppelingen

PHP script bestanden

  1. php-timer-object

 

Er zijn 8 reacties op 'Php timer object'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Kalle P
Kalle P
16 jaar geleden
 
0 +1 -0 -1
MicrotimeAsFloat veranderen in microtime_as_float anders roep je een onbekende functie aan.

Grappig verzonnen, maar voor de rest beetje nutteloos....

edit:
$strFile = '' dit gaat nergens over.

Gewoon $strFile in de functie en dan controleren of ie bestaat met isset() of empty()
Storeman storeman
storeman storeman
16 jaar geleden
 
0 +1 -0 -1
Nee, dat is niet hetzelfde, nu is het een optionele parameter. Dus niet verplicht. Met jou methode ben je verplicht om wat in te vullen, anders zal php hierover struikelen met een error. Wellicht neem jij het niet zo nauw, maar ik houd het graag netjes.

Nutteloos?

Ik heb een singleton (soort van) hiervoor gemaakt. Op deze manier kun je door je hele script snel en eenvoudig je performance bepalen zonder dat je direct output krijgt. Ik echo het aan het eind van de pagina in een comment. Wel zo netjes.
Eric Cartman
Eric Cartman
16 jaar geleden
 
0 +1 -0 -1
Singleton wordt hier echt niet gebruikt hoor. Singleton houdt ongeveer in dat je van een klasse maar een object kunt maken. Dat doe je door de constructor privé te maken en een statische methode gebruikt om een instantie van het object te maken. Van jouw object kan ik makkelijk meer dan één instantie maken.

En dat je een lege string van $strFile maakt, slaat idd nergens op, aangezien je de waarde gewoon overneemt, je doet er verder niets mee.

Verder is dit best een grappige klasse, handig te gebruiken wel :)
Storeman storeman
storeman storeman
16 jaar geleden
 
0 +1 -0 -1
Nee, dit is inderdaad geen singleton, dat ben ik helemaal met je eens. Maar ik gebruik het wel als zodanig, of gewoon een global.

Wat is er nou mis met die $strFile? De parameter is optioneel. En ja, ik zou het direct kunnen aanspreken via $timer->_strFile = 'myfile';

Echter houd ik variabelen liever privat. Dat is een goede gewoonte ( code complete (boek)), daarnaast ook een stijl van programmeren.

Het slaat nergens op? Ik zou dan graag de discussie aangaan hoe het dan wel te doen.
Jan Koehoorn
Jan Koehoorn
16 jaar geleden
 
0 +1 -0 -1
Ik vind het niet een heel verkeerde manier. Het enige nadeel is dat je membervariabele nu altijd een waarde toegekend krijgt (een lege string als er geen argument meegegeven wordt) en dat kan misschien eleganter met een setter functie.
Eric Cartman
Eric Cartman
16 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

    function DIV_TIMER($strFile = null)
    {

        if (is_null($strFile) === false)
            $this->_strFile = $strFile;
        
        $this->start();
    }

    
?>


Dankjewel Jelmer
Jelmer -
Jelmer -
16 jaar geleden
 
0 +1 -0 -1
Cartman is een ! vergeten?

Ik zou overigens gewoon gaan voor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    function DIV_TIMER($strFile = null)
    {

        $this->_strFile = $strFile;
        $this->start();
    }

?>


Zo is hij optioneel, en waneer hij niet meegegeven wordt, blijft hij null. En dan kan je regel 52 mooi veranderen naar if($this->_strFile). Lekker simpel. Ik mis alleen, zoals Jan al zei, nog een mogelijkheid om hem achteraf nog in te stellen :)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Storeman storeman
storeman storeman
16 jaar geleden
 
0 +1 -0 -1
Ik heb eea aangepast, zie changelog.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. php-timer-object

Labels

Navigatie

 
 

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.