Gå til innhold

Windows; Kjøre ett PHP script konstant?


Anbefalte innlegg

Skrevet

Hei, jeg lurte på no, hvordan får jeg ett PHP script til å kjøre konstant?

 

Altså hvis en endring skjer som scriptet skal håndtere så skjer det umiddelbart?

 

Jeg har en veldig teit løsning nå, en bat fil som kjører PHP scriptet en gang i døgnet, liker ikke løsningen og lurer på om det finnes en bedre og raskere løsning?

Videoannonse
Annonse
Skrevet

Skulle hatt litt innsikt i HVA det er skriptet gjør :p

Windows er vell generellt ikke så greit å ha med å gjøre når det gjelder å jevnlig kjøre ting, men du kan gjøre selve skriptet om til at det selv kjører kontinuerlig med en while (1) {} loop.

Hva er det scriptet skal gjøre?

Skrevet

Skulle hatt litt innsikt i HVA det er skriptet gjør :p

Windows er vell generellt ikke så greit å ha med å gjøre når det gjelder å jevnlig kjøre ting, men du kan gjøre selve skriptet om til at det selv kjører kontinuerlig med en while (1) {} loop.

Hva er det scriptet skal gjøre?

 

Okey har to ting, en som skal sjekke om ett tall i databasen er mine enn time() og hvsi den er slette raden og ett som skal sjekke en annen database etter endringer og hvis det er sjedd endringer skal det overføres til en annen database (nei ikke synkronisering)

 

Jeg har begynt og lure på om jeg skal prøve å lage det i perl istede, men vil helst høre om det er noen mulighet for å få det kjørt i php.

Skrevet

Hmm... må jo bli noe slikt ish (for det som skal slette):

<?php

while (1) {
 $sql = "SELECT * FROM databasen WHERE date < '".time()."'";
 $res = mysql_query($sql);
 if (mysql_num_rows($res) > 0) {
   while ($row = mysql_fetch_assoc($res)) {
     $sql = "DELETE FROM databasen WHERE id='".$row['id']."'";
     mysql_query($sql);
   }
 }
 usleep(10000000); //Hvert tiende sekund
}

?>

 

dette skriptet vil kjøre kontinuerlig og sjekke med 10 sekunders mellomrom.

Skrevet

Ikke når du bruker

usleep(10000000);

Bruker en del slike skript på linux serveren min, som kontinuerlig sjekker og har usleep() kommandoen for å ikke kjøre i en CPU intens loop.

Skrevet (endret)

Hva med, php maximum worktime? vil ikke den skaff emeg trøbbel her?

 

bare kjøre den sånn her?

 

8edd2bc14ea17b93fc5dcb604787287c.png

 

Krever ikke mye resurser?

Endret av Rudde93
Skrevet

Du kan kjøre set_time_limit(0); i begynnelsen dersom timeout blir en issue. Men jeg tror ikke timeout er et issue når du kjører i PHP CLI.

Hvordan ser taskmanager ut på prosessen når du kjører den? Jeg vil tro den benytter veldig lite systemressurser.

Skrevet

PHP er ikke egnet for dette - du må lage en windows-service i f.eks .NET.

Nei, enig i det. PHP er ikke egnet for dette. Spørsmålet var vell opprinnelig om det var mulig i PHP. :p

Skrevet

Altså programmet må sjekket etter oppdaderinger i databasen, har sett litt på perl, C# og C++ nå men finner ingen dynamisk løsning på at den får sendt ny info fra databasen? Hva skal jeg søke etter? :-S

Skrevet

Hva med å bruke en trigger?

 

Francis

 

Det var ingen dum idé, men jeg har aldri rørt det før :p

 

Lurer på om noe slik jeg prøver å fremstille i denne koden ville fungert?

 

CREATE TRIGGER vip_admin
FOR EACH ROW
BEGIN

IF vip_to < unix_timestamp(now()) THEN
eval("C:/xampp/php/bin/php.exe -f C:/phpscript.php");
END IF
END;

Skrevet

Hvorfor blande PHP inn i dette?

 

Slik jeg har forstått det skal du bare gjøre databaseoperasjoner, og dersom du bruker en trigger som fyrer på insert/update, kan du skrive SQL-koden som du vil skal kjøres rett i triggeren.

 

Francis

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...