Vertraging in script

Status
Niet open voor verdere reacties.

sanma

Gebruiker
Lid geworden
11 dec 2008
Berichten
170
Hallo,

Ik wil graag een vertraging inbouwen in mijn script echter met de functie sleep(1) bereik ik niet het gewenste resultaat aangezien hierbij alles een vertraging heeft voor het getoond wordt.

Ik wil dus graag het gehele script uitvoeren (ook de echo hiervan) en slechts een klein deel laten vertragen bijvoorbeeld:

PHP:
<?php 

echo"Tekst die gelijk moet verschijnen";
mysql_query("update tabel set kolom = kolom + 1"); //query gelijk uitvoeren

sleep(1);

echo"Tekst die na 1 sec moet verschijnen";
mysql_query("update tabel set kolom = kolom + 1"); //query na 1 sec uitvoeren

Weet iemand of dit mogelijk is want met het sleep commando duurt het 1 sec om de pagina te laden en verschijnen beide teksten tegelijk ook al voert hij wel de queries goed uit 1 sec na elkaar.
 
hier is de functie flush() voor. zet simpel weg flush(); na het stuk dat je alvast wil versturen na de browser en daarna de sleep.

in jouw voorbeeld:

PHP:
<?php 
 
echo"Tekst die gelijk moet verschijnen";
mysql_query("update tabel set kolom = kolom + 1"); //query gelijk uitvoeren
 
flush();
sleep(1);
 
echo"Tekst die na 1 sec moet verschijnen";
mysql_query("update tabel set kolom = kolom + 1"); //query na 1 sec uitvoeren

meer informatie op de php.net pagina

mvg. Ecross
 
Wat is sowieso de bedoeling van die vertraging?
Als het is om tekst te laten verschijnen kun je dit volgens mij beter via Javascript laten doen
 
om de eerst tekts direct te laten verschijnen, en doormiddel van de sleepfunctie de andere tekst een seconde later, zul je de functie ob_implicit_flush moeten gebruiken:

PHP:
<?php
ob_implicit_flush(TRUE);

echo 'deze tekst verschijnt direct';
sleep(1)
echo 'deze tekst verschijnt na 1 seconden';

?>
 
De tekst is nog niet zo belangrijk wel dat een bepaalde query pas na 1 sec wordt uitgevoerd maar de rest wel allemaal gelijk.
 
Queries worden nooit tegelijk uitgevoerd altijd een voor een... wat is de reden dat je een seconde vertraging wil? Als dat duidelijk is zijn er misschien betere oplossingen voor je probleem.
 
Ik begrijp dat query's 1 voor 1 worden uitvoert echter gebeurt dit in een aantal ms. Ik wil graag bezoekers bijhouden maar wil ze pas tellen wanneer ze bijvoorbeeld minimaal 1 seconde op de site zijn dan pas moet hij een query uitvoeren.

Hopelijk is het hiermee wat duidelijker geworden.
 
Vergeet niet dat de pagina niet uitgeladen is totdat het hele script is voltooid... breng je vertraging in het script, en gebruik je de ob_implit_flush (ofzo) functie, dan de browser van de bezoeker pas 1 seconde later aangeven dat hij is uitgeladen...

Voor dit zou je beter naar javascript/ajax kunnen kijken
 
Dan gaat dit niet werken, want dit script wordt uitgevoerd ongeacht of de user nou op de pagina blijft of niet. Wat je beter kunt doen is een javascript callback doen.

Of, wat je nog beter kunt doen, is Google Analytics installeren op je website.
 
in principe kun je dan nog een extra controle doen met een andere functie, die aangeeft of de browser nog meelaadt... Ben alleen de naam vergeten :p
 
Ik had het werkend via ob_implicit_flush(true); echter met PHP update werkt dit niet meer.

Om het simpel uit te leggen wil ik een teller maken:
1
2
3
4

Er moet echter een seconde tussenzitten dus eerst verschijnt 1, dan 2 etc. Ik kan dit met sleep dan maar dan wacht hij 5 seconde en toont hij ze allemaal, met ob_implicit_flush(true); was dit niet maar dat werkt dus helaas niet meer.

Iemand een andere oplossing?
 
Het gaat wel om een query uit te voeren dus na 1 seconde dient een query uitgevoerd te worden.

Ik wil dit inbouwen op een pagina zodat ik kan bijhouden via query welke hits ik heb, dit kan ook 10 seconde zijn bijvoorbeeld.
 
AJAX is de oplossing, google "AJAX PHP tutorial" en dan moet je er wel uitkomen ;)
 
Of even de PHP- en Javascript-sectie hier doorzoeken.
De laatste tijd zijn er meer mensen met AJAX-vragen geweest.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan