systeem klok

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bertus Wikkerink

Bertus Wikkerink

04/10/2010 15:34:46
Quote Anchor link
Ik wil mijzelf PHP aanleren.
Al lerende raak ik de draad een beetje kwijt.
Ik zou graag willen weten hoe ik bepaalde dingen moet begrijpen.
bv:
De systeem klok.

De systeemklok is een running klok.
Dat wil volgens mij zeggen dat er een programmeer-loop aan de gang is.

Immers als ik met de functie gettime () en/of getdate () gegevens omtrent de tijd ophaal, dat ik dan alleen die gegevens terug krijg van die ene seconde wanneer ik die gegevens ophaal.

Volgens mij als ik elke seconde die gegevens met deze functies ophaal, zou ik met echo die ook elke seconde weer op het scherm kunnen schrijven.
Maar het programma zou dan niet meer verder kunnen omdat het elke seconde met die loop bezig is.
Meerdere mensen vertellen mij dat het met Java wel kan.
Maar dat maakt het voor mij nog niet duidelijk.
Haal je de gegevens dan op en laat je je zelf geschreven programma dan verder rekenen en die berekeningen op het scherm schrijven of haal je met een of andere functie die lopende klok op?
Of moet ik het zo zien dat een of andere functie die op zichzelf een loop functie is, maar die ik dan ergens op het scherm kan weergeven en daar ergens in een hoekje zijn loop zijn gang laten gaan, terwijl de rest van het/mijn programma dan gewoon door gaat?
Want als dat zo is snap ik het niet!
Volgens mij werkt een programma zo dat de decodering van opdracht regel naar opdrachtregel loopt tenzij de opdrachten inhouden dat bepaalde regels weer opnieuw moeten worden doorlopen. Maar als die opdrachten zelf aangegeven dat hun opdrachten moeten stoppen, dat dan de decodering na die opdrachten met het programma verder gaat.
Ik hoop dat ik duidelijk ben
 
PHP hulp

PHP hulp

08/05/2021 06:48:14
 
John D

John D

04/10/2010 15:43:00
 
Pim -

Pim -

04/10/2010 17:06:48
Quote Anchor link
In principe draait alles rustig van boven naar beneden. Ik weet niet hoe de PHP internals dat doen, maar ik neem aan dat dat op die wijze gaat. Dit betreft 1 request. Een webserver moet echter vele request per seconden aan kunnen, daarom krijgt elke request een eigen 'thread', processen die naast elkaar lopen.

Wat het nog wat ingewikkelder maakt is dat zowel de browser als de server de data kan cachen voordat het op het scherm verschijnt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
while(true) {
    echo time();
    sleep(3);
}

?>

Een van de twee caches kan de data opslaan en wachten met verzenden/weergeven todat alles binnen is, nu klinkt dat raar, maar als het HTTP protocol een beetje begrijpt is dat heel logisch.

Dit protocol beschrijft de vraag (request) van een cliënt naar een server of het antwoord (response) van die server.

Beide bestaan uit een body en headers. De body is bij de request de data van post velden en bij de response de pagina-inhoud. De headers beschrijven de URL en extra informatie over cookies, taal en dergelijke.

Zo'n HTTP bericht is dus 1 blok informatie, dat raar is om gesplitst te worden.

Heb ik het wat duidelijker gemaakt?
En aan de mensen die hier meer van weten: klopt het helemaal?

En nog even over je laatste opmerking over de volgorde van het 'decoderen' (dit wordt parsen genoemd). De PHP-parser gaat eerst langs alle geïnclude code en slaat de definities (functies, klassen en constanten) op. Dan wordt bij het eerste bestand de niet-definitie-code (is hier een naam voor) uitgevoerd (idealiter is dat zo weinig mogelijk). Deze kan eerder geparsde definities aanroepen. Als dit voltooid is wordt de niet-definitie-code van het volgende bestand uitgevoerd en zo verder. Dit zorgt ervoor dat het volgende werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
a();
function
a()
{

    echo 'test';
}

?>

Ook komt het hierdoor dat parse-errors worden opgemerkt in code die helemaal niet wordt uitgevoerd.

Duidelijk?
 
Bertus Wikkerink

Bertus Wikkerink

04/10/2010 17:41:14
Quote Anchor link
Dank voor deze al iets verhelderende tekst. Hieronder een deel ervan:
"Multitasking is een methode om één processor 'schijnbaar' meerdere taken (programma's of delen daarvan) tegelijkertijd te laten uitvoeren (zie ook gedistribueerd programmeren)."
Er wordt gemeldt dat het dan lijkt alsof alles tegelijk wordt uitgevoerd.
Dus in werkelijkheid niet.
Betekend dit dan dat tussen elke seconde van een lopende klok door, het programma verder gaat met het programma?
 
- SanThe -

- SanThe -

04/10/2010 17:55:54
Quote Anchor link
elke seconde ... => ... elke microseconde of nog korter

De processor kan eigenlijk maar één ding tegelijk. Hij loopt dan ook alle processen af en voor elk proces doet is steeds een klein beetje. Aangezien dit razendsnel gaat lijkt het voor de gebruiker dat alles tegelijkertijd gebeurt.
 
Bertus Wikkerink

Bertus Wikkerink

04/10/2010 18:16:39
Quote Anchor link
Allereerst alle mensen die gereageerd hebben bedankt!

Als ik het goed heb kan ik dus gewoon een lopende digitale klok laten lopen en zorgen de schedulers ervoor dat elke seconde mijn programma(van de lopende digitale klok)tijd krijgt van de processor en dat in de tussentijd de rest(lees: mijn site) verder wordt uitvoerd.
 
- SanThe -

- SanThe -

04/10/2010 18:26:24
Quote Anchor link
Ja, dat gebeurt nu toch ook. Als je windows hebt dan heb je rechtsonder de klok die ook gewoon door loopt terwijl jij aan het internetten bent of zit te typen of zoiets.
Gewijzigd op 04/10/2010 18:26:35 door - SanThe -
 
Bertus Wikkerink

Bertus Wikkerink

04/10/2010 19:24:45
Quote Anchor link
Klopt!

Zo simpel en ik had het niet door.
Iedereen bedankt. Ik weet nu genoeg en sluit deze vraagstelling hierbij.

Iedereen succes bij zijn of haar project.
 



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.