RadiantHeart Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Har laget et script som generer en sql-fil med backup av databasen min og lagrer den på serveren. Dette tar rimelig nok litt tid. Tenkte å kjøre dette en gang i uken eller noe, men vil nødig at en uheldig bruker må sitte og vente på dette i opptil 30 sekunder. Derfor plasserte jeg ignore_user_abort(true) og set_time_limit(0) i scripet. Da vil det kjøre ferdig selv om brukeren avbryter. Så tenkte jeg jeg kunne bruke fopen() for å åpne dette fra en annen fil. Der tenkte jeg jeg kunne avbryte fopen() etter ett sekund eller noe. Noe slikt altså: $fopen_timeout = 1; $handle = fopen(backup.php, 'r', $fopen_timeout); $fclose($handle); Men problemet er jo at fopen ikke har noen slik timeout. Noen gode ideer? Kom gjerne med ideer som kan løse problemet på andre måter også. Lenke til kommentar
OIS Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 fopen gjør ikke det du ser ut til å tro den gjør afaik. Den åpner filen til å lese eller skrive, ikke for å kjøre den. Du må da bruke include/require istedenfor (lese filen og bruke eval er frarådet). Det beste er å lage en php fil som kan kjøres fra kommandolinjen og kjøre den med cron i linux på et tidspunkt med lav trafikk eller rett før du kommer på jobb/hjem så du kan fikse eventuelle feil eller kjøre den på nytt. Hvis du ikke har cron tilgang kan du kjøre en cli fil fra en webside med system. Fork koden i cli filen, foreldreprosessen avslutter (så websiden kan avslutte skikkelig) og barneprosessen fortsetter med å kjøre koden din. Må du kjøre den i web serveren (noe du ikke bør høres det ut som) så må du legge til session_write_close() så brukeren kan få frem andre sider. sørge for at 2 eller flere sidelastninger ikke starter prosessen samtidig. Lenke til kommentar
[kami] Skrevet 13. mai 2009 Del Skrevet 13. mai 2009 vil anbefale deg å ta en titt på mysqldump kommandoen (om du ikke bruker den allerede) jeg ville satt opp en cronjob som kjørte backup scriptet en gang i døgnet, (eller hva som passer deg best). Lurt å pakke fila som mysqldump lager også for å spare plass Lenke til kommentar
RadiantHeart Skrevet 13. mai 2009 Forfatter Del Skrevet 13. mai 2009 (endret) Takker for gode svar. Vil mysqldump opprette en fil direkte eller kan den sende resultatet tilbake til php slik at jeg kan gjøre operasjoner på det? Endret 13. mai 2009 av RadiantHeart Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå