/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Tjek for ændringer
Fra : Michael Hansen


Dato : 28-09-02 13:50

Hej NG !

Er der en måde at lave et script der kontinuerligt (fx engang hvert andet
sekund) tjekker et felt i i databasen for ændringer ? Det skal siges af jeg
ikke har adgang til cron og at meta refresh er udelukket.

Mvh
Michael



 
 
Jan Fjeldmark (28-09-2002)
Kommentar
Fra : Jan Fjeldmark


Dato : 28-09-02 14:06

Michael Hansen wrote:
> Er der en måde at lave et script der kontinuerligt (fx engang hvert andet
> sekund) tjekker et felt i i databasen for ændringer ? Det skal siges af jeg
> ikke har adgang til cron og at meta refresh er udelukket.

Hvis du vil gøre det i PHP:

$v = getvalue ();
$oldv = $v;

while (sleep (2)) {
$v = getvalue ();
if ($v != $oldv) {
// gør et eller andet
$oldv = $v
}
}

Getvalue er en funktion som du selv laver, der læser det pågældende felt
i databasen.

Det er samme princip i andre sprog.


--
Venlig hilsen
Jan Fjeldmark
<http://janf.dk>


Michael Hansen (28-09-2002)
Kommentar
Fra : Michael Hansen


Dato : 28-09-02 15:13

Hej

<SNIP>

Jeg har prøvet med følgende eksempel men det virker ikke :(
Nå jeg kører det i browseren så tager den en 3-4 sekunder om at loade siden
men kommer så bare frem med en blank side !

$v = profilstatus("22", "antal");
$oldv = $v;

while (sleep(10)) {
$v = profilstatus("22", "antal");
if ($v != $oldv) {
Print "Ændret !";
$oldv = $v;
}
else { echo $v; }
}

Efter min overbevisning så skulle den da som minimum skrive indholdet af $v
!?

Mvh
Michael




Larz (28-09-2002)
Kommentar
Fra : Larz


Dato : 28-09-02 15:16

Michael Hansen wrote:
> Jeg har prøvet med følgende eksempel men det virker ikke :(
> Nå jeg kører det i browseren så tager den en 3-4 sekunder om at loade siden
> men kommer så bare frem med en blank side !

Husk

   set_time_limit(0);

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.


Henrik Hansen (28-09-2002)
Kommentar
Fra : Henrik Hansen


Dato : 28-09-02 19:08

Larz wrote:
> Michael Hansen wrote:
>
>> Jeg har prøvet med følgende eksempel men det virker ikke :(
>> Nå jeg kører det i browseren så tager den en 3-4 sekunder om at loade
>> siden
>> men kommer så bare frem med en blank side !
>
>
> Husk
>
> set_time_limit(0);
>

AFAIK skal man også have et flush() kald ind i loopet, hvis man vil have
output flushet til browseren før scriptet er færdigt.

--
Henrik Hansen


Jan Fjeldmark (28-09-2002)
Kommentar
Fra : Jan Fjeldmark


Dato : 28-09-02 19:08

Jeg tror mit tidligere indslag var lidt på vildspor. Jeg prøver igen.

Det som dit eksempel gør er at checke hvert tiende sekund om der er
ændret. Men du må forstå at dit output (i princippet) først sendes til
browseren, når scriptet afslutter.

Hvis du ønsker at opdatere browserbilledet løbende uden at brugeren skal
gøre noget, så kan du ikke bruge server side scripts. Det er ikke et
problem med PHP men med den måde webbrowsere virker.

Jeg er ikke den rette til at pege på en løsning. Men måske er Java
applets eller Javascript en mulighed.

Lad mig illustrere browserens virkemåde. (Nedenstående kan kun læses
rigtigt hvis din newsreader kan vise fixed font så som courier).
En url er nærmest et andet udtryk for en web-adresse.

browser server
============= ===================================
klik på link.
Url sendes -- url ------>
program der svarer til url køres.
programmet danner output.
programmet afslutter.
<--output---- output sendes
Side vises.


Og her kommer dit program:

browser server
============= ===================================
klik på link.
Url sendes -- url ------>
program der svarer til url køres.
programmet danner output.
programmet venter 10 sekunder
programmet danner output.
programmet venter 10 sekunder
programmet danner output.
programmet venter 10 sekunder
gentages for evigt ...

I virkeligheden afbrydes programmet når en timer udløber. Men reelt
hjælper det ikke noget. Intet vises i browseren.

Alternativet er et program på klienten (browseren):

browser server
============= ===================================
klik på link.
Url sendes -- url ------>
program der svarer til url køres.
programmet sender et andet program.
programmet afslutter.
<--program--- det andet program sendes.
program køres
programmet
venter 10 sek.
program
sender url
-- url ----->
program der svarer til url køres.
programmet sender opdaterede data.
programmet danner output.
programmet afslutter.
<--output---- output sendes
Side vises.
programmet
venter 10 sek.
program
sender url
-- url ----->
program der svarer til url køres.
programmet sender opdaterede data.
programmet danner output.
programmet afslutter.
<--output---- output sendes
gentages indtil brugeren afbryder.

Denne newsgroup omhandler kun server side programmering. Men der må være
en anden som omhandler client side programmering.

--
Venlig hilsen
Jan Fjeldmark
<http://janf.dk>


Niels Andersen (28-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 28-09-02 19:36

Jan Fjeldmark wrote in <3d95eff2$0$84687$edfadb0f@dspool01.news.tele.dk>:
> Det som dit eksempel gør er at checke hvert tiende sekund om der er
> ændret. Men du må forstå at dit output (i princippet) først sendes til
> browseren, når scriptet afslutter.

I praksis kan man sagtens sende én linje af gangen. Fx. ved at kalde flush()
når man har skrevet noget ud.

Det er dog helt op til browseren hvad den vil gøre, indtil hele dokumentet
er hentet.
Et helt simpelt eksempel *hel* uden andet end "<p>" omkring linjen, og så et
par lineskift efter "</p>" har jeg dog held med at bruge. Når det virker,
kan man prøve at putte noget pynt på hist og her lidt af gangen.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Martin Seebach (30-09-2002)
Kommentar
Fra : Martin Seebach


Dato : 30-09-02 13:12


"Michael Hansen" <michael@amweb.dk> wrote in message
news:3d95a5d7$0$813$d40e179e@nntp03.dk.telia.net...
> Hej NG !
>
> Er der en måde at lave et script der kontinuerligt (fx engang hvert andet
> sekund) tjekker et felt i i databasen for ændringer ? Det skal siges af
jeg
> ikke har adgang til cron og at meta refresh er udelukket.
>
> Mvh
> Michael

Hej,

Der er kommet en håndfuld muligheder her i gruppen, men det bliver noget b*
at have kørende i et produktionsmiljø.. Det er nok en bedre ide at samle
opdatetingen af det her felt i en funktion, og så i den funktion gøre det
der skal gøres ved en update..


--
Venlig hilsen
Martin Seebach
- min email adresse virker..



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408951
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste