Hvis du skal være 100% sikker på at det køres, skal du sætte en tidsstyret job op på serveren. F.eks. med Cron. Dvs. at Cron på et givent tidspunkt kalder en php-fil, denne indeholder så dit loop.
Hver gang en person besøger din side, tjekker du om der er gået over 24 timer siden din while-loop kørte sidste gang. Hvis der er, så kører du den igen :)
Det gør du ikke i php. det skal være et helt script der startes og køres hver gang (med det kode du vil have undeni din løkke).
een måde at lave det er ved at bruge cron-jobs. det er nemt på en unix-baseret server, men duer ikke på windows. Og hvis du bliver hosted er det ret usandsynligt at din vært vil tillade det (du kan nemt komme til at lægge hele serveren ned så alle de andre kunder bliver sure)
Hvor vigtigt er det med 'præcis hver 24 timer', hvis klokkeslettet ikke er vigtig er det nemmest at gøre det i forbindelse med at folk henter sider:
$nu = date( "j" ); $fil = fopen( "sidst_jeg_korte_xjob.txt", "r+" ); $dato = fread( $fil, 1024 ); rewind( $fil ); fwrite( $fil, $nu ); fclose( $fil ); if ( $dato != $nu ) { // dette er en ny dato så der er gået ca 24 timer include( "din_phpkode_der_skal_udføres_hver_24_timer.php" ); }
Hehe som sagt så kører det i en console... altså det er en IRC bot i PHP... og jeg skal update noget stats hvilket jeg gerne ville gøre hver gang der er gået 1 dag... altså 24 timer... og da filen kun kørers 1 gang skulle den gerne kører hele tiden... loopen altså :P
problemet er at php ikke har nogen 'vent_indtil( tidspunkt )' funktion der lader andre processer køre imens. Så i løkken ovenover kører php scriptet bare hele tiden. og tester og tester indet til der er gået 24 timer. Det kaldes 'polling' og er nemt, men ikke smart.
på en windows maskune kan du muligvis køre andre programmer samtidig (windows bruger timer-interrupts til at sørger for at tiden fordeles nogenlunde ligeligt mellem de programmer der bliver startet. Men mange andre steder er man nødt til selv at fortælle i programmet at 'nu skal de andre processer have en chance imens jeg venter' og det kan man altså ikke i php.
PHP har da en ganske udmærket sleep(antal sekunder)-funktion. Jeg er helt overbevist om, at PHP ganske frivilligt overlader maskinen til andre programmer, sålænge den "sover".
Nu har jeg ikke lige prøvet den endnu... men det lyder som om den sætter pause på alt i scriptet? For jeg har jo en masse koden i samme fil som kører på sammen tid, og som kan kaldes frem ved !command da det jo er en IRC bot. Så hvis den sleep kommer uden for lykken så pauser den alt?
Fik aldrig taget mig sammen til at færdig gøre det. Er startet på et andet projekt såå... men jeg går da udfra jakoba's while loop nok skulle havde kunnet klarer den :) sleep funktionen opgav jeg da det lyder som om det stopper hele scriptet.
Synes godt om
Slettet bruger
30. december 2003 - 14:53#17
Så er det vel bare jakoba, du skal have svar fra?
Jeg har jo ikke hjulpet dig, så jeg skal ikke have noget.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.