Ett kontinuerligt php-script som underhåller databasen?

Permalänk
Medlem

Ett kontinuerligt php-script som underhåller databasen?

Hej,

Jag skriver ett litet mobilspel som gör http-requests till php-script som ligger på ett One.com-konto. So far so god. Men jag behöver även ett script som körs kontinuerligt, som tar bort gamla spel, skickar push-meddelande till klienter, osv...

Frågan är, hur uppnår jag detta, utan att behöva sätta upp en dedikerad maskin som med jämna mellanrum (ca en gång i timmen, i mitt fall) kallar på ett underhållsscript? Min första tanke var ju att göra underhållsscriptet i en oändlig loop som sover en timme, kör sin grej, sover en timme osv, men scriptet får visst bara köras ett par sekunder innan det avbryts.

Finns det någon uppenbar lösning på det här som jag missar? Känns overkill att behöva sätta upp en hel server bara för att anropa en script en gång i timmen.

Tack!

Visa signatur
Permalänk
Medlem

Ett vanligt sätt är att man sätter upp ett cronjob som anropar adressen enl. bestämd tidsintervall, så kolla med one.com om dom tillåter dig att skapa cronjobs.

Permalänk
Medlem

Tack, nu har jag ett begrepp att googla på!
Tyvärr stödjer inte One.com cronjobs (en av flera saker jag inte tänkte på, eller visste om att jag skulle behöva, när jag valde webhotell) men det verkar finnas rätt stora och pålitliga onlinetjänster för det (t.ex. https://www.setcronjob.com/) som jag ska ta en titt på.

Visa signatur
Permalänk
Medlem
Skrivet av s.c.s.i.:

Men jag behöver även ett script som körs kontinuerligt, som tar bort gamla spel, skickar push-meddelande till klienter, osv...

Detta borde du inte använda php eller webservern till. Det bästa sättet att göra detta på är att skriva en tjänst eller schemalagd aktivitet, som tyvärr vanligtvis inte kan köras på ett vanligt webhotell.

Visa signatur

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Permalänk
Medlem
Skrivet av xinux:

Detta borde du inte använda php eller webservern till. Det bästa sättet att göra detta på är att skriva en tjänst eller schemalagd aktivitet, som tyvärr vanligtvis inte kan köras på ett vanligt webhotell.

Varför inte? Det är ett enkelt spel (ala Wordfeud) och "underhållet" kommer i princip att handla om köra en sql-query som tar bort alla posts äldre än ett visst datum, samt anropa ett annat script, som kommer att skicka push-meddelande till mobiltelefonerna (som också är en väldigt snabb och enkel process).

Vad är nackdelarna med att göra som jag har tänkt? Just nu fungerar det bra, jag använder har php-script för registrering, verifiering av inloggningsuppgifter, bjuda in spelare, osv, och allt fungerar smärtfritt.

Som det låter så är det här första projektet av det här slaget för mig, och första gången jag håller på med php överhuvudtaget, så jag är helt öppen för att saker som för mig verkar "fungera smärtfritt" egentligen är dåliga lösningar

Visa signatur
Permalänk

Kan du inte skapa en fil som säger när programmet startades senast? Varje gång php-scriptet körs så kollar den om det gått tillräckligt lång tid, annars så startas ditt program via php-scriptet. En work-around som borde funka.

Visa signatur

CPU: AMD FX-8350 @ 4.7GHz | RAM: 32GB Vengeance @1600MHz | GPU: Asus HD7970 DCII Top @ 1.0/5.6 GHz | ASRock 990FX Fatal1ty | PSU: Newton R3 800W Platinum | HD: 128 GB Plextor M3 Pro, 300 GB WD Green | triple-boot: Win7-64,WinXP-32,debian-64

Permalänk
Medlem

Det är absolut enklast att göra så som du tänkt tycker jag, så kör på det! jag skulle kunna lägga upp ett cronjob på mitt jobbs server men då kan jag tyvärr inte garantera att det ligger kvar om ett tag =P

Permalänk
Medlem
Skrivet av bellasoda:

Kan du inte skapa en fil som säger när programmet startades senast? Varje gång php-scriptet körs så kollar den om det gått tillräckligt lång tid, annars så startas ditt program via php-scriptet. En work-around som borde funka.

Problemet då är om ingen går in vid ungefär den tidpunkten pushmeddelanden skall skickas ut =P

Permalänk
Medlem

Tack för hjälpen allihop!

Visa signatur
Permalänk
Medlem
Skrivet av s.c.s.i.:

Tack för hjälpen allihop!

Jag kommer sent nu men.. för singel-query grejer kan du ju fixa detta direkt i (utgår ifrån att du använder) mysql. Se t.ex. https://stackoverflow.com/questions/9621355/how-to-schedule-a.... Dock kanske man inte får göra sånt på One..

Visa signatur

FreeNAS 3U | 8GB | 2x2x3TB ProxMox i7-8700K | 32GB Desktop Dell 22" | Benq 22" | i5-smth | 16GB | Intel 520 120GB | 500GB | Arch

Permalänk
Medlem

Jag skulle antingen använda crontab eller ett job i databasen.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770