God morgon!
Jag har kodat ett bokningssystem och vill nu till detta ha en påminnelsefunktion. Dvs det ska skickas en påminnelse via e-post till användaren en viss tid innan den bokade tiden. Hur skall jag bära mig åt för att fixa detta?? Är det så att jag måste ha en server eller liknande som kontinuerligt "känner efter" om en påminnelse skall skickas eller går det att lösa på ngt annat sätt...??
Påminnelse-funktion
21 svar · 876 visningar · startad av westman
Kör du på Linux kan du köra s.k. "cron jobs", och på Windows kan du köra med schemaläggaren.
hur menar du nu, att jag ska lägga in varje bokning för hand i schemaläggaren. Det är en webbapplikation som är bunden till en databas där det sker ungefär 10-15 slumpmässiga bokningar varje dag, så det blir ju mkt jobb...
Det är svårt att svara mer konkret om du inte berättar vad lösningen är byggd på. ASP.NET/SQL Server, PHP/MySQL, ASP/Access eller kanske någon annan kombination?
Tanken är i alla fall att du schemalägger körning av ett skript så att det körs med jämna mellanrum. I skriptet kollar du om någon ska ha en påminnelse och skickar i sådana fall iväg en sådan.
Jag använder PHP och MySQL. Så du menar att jag på min dator/annan dator scemalägger ett script som sköter påminnelser? Med andra ord så krävs det att en burk står igång dygnet runt (eftersom en påminnelse kan behövas skickas när som helst). Om så är fallet så kan jag lika gärna på den datorn ha scriptet körandes hela tiden..
Kan man lägga till ett script i schemaläggaren? Är det inte bara exe-program?
Du har fortfarande inte svarat på ifall det snurrar Windows eller Linux på servern. Om det är Windows kan du använda schemaläggaren, som nämnt ovan.
Då är det någon slags exekverbar fil (.exe, .vbs, el. likn.) som det handlar om, och det skriver du väl enklast i VB eller VBScript, eller kanske tillochmed C++ ifall du kan det? Låt filen göra en koll mot databasen och göra de åtgärder som du vill i samband med påminnelsen. Schemaläggningen måste köras på samma maskin som binärfilen (exen) ligger på, men behöver inte nödvändigtvis vara på din webbserver eftersom den antagligen bara skall joxa med databasen eller skicka ett mail.
ok. Jag kör Windows XP Pro och Windows 2000 Server. Men då kan jag ju lika gärna göra som jag sa tidigare; låta en dator stå och köra scriptet hela tiden. Då kan jag ju använda mig av PHP... Eller hur?
Uh, ja visst kan du det.
Du kan även driva din spis med hjälp av en hävaxel och en åsna som går runt och runt istället för att koppla in sladden i väggen, om du förstår vad jag menar.
:birp
precis, varför snacka schemaläggning..
En annan tanke är ju kanske att man skriver ett script som skickar påminnelsen så fort bokningen är gjord men att den har en tidsstämpel som berättar när mailetskall levereras, eller?
Huruvida de funktionerna finns i mailservrar världen om, det vet jag inte, så jag skulle inte satsa några pengar på den lösningen, nej.
Det jag menade med det förra inlägget var att din åsna, precis som ditt lilla PHP-script, antagligen kommer att 'faila' med jämna mellanrum. En binärfil, eller ett eluttag i väggen, är lite mer säkert och stabilt, rent driftmässigt sett. Dessutom är det slöseri att ha en dator som bara står och uppdaterar en webbsida hela tiden.
Eftersom de kör PHP så skulle jag gissa på ett cron job som exekverar ett PHP-skript med jämna mellanrum.
ehum, vad är "cron"? :r
har hört talas om det men aldrig fått grepp om innebörden och funktionen..
Google kan mer än bara sökningar.
http://www.google.com/search?q=define%3Acron&start=0&start=0&ie=utf-8&oe=utf-8
Cron är funktionsmässigt samma sak som schemaläggaren i Windows.
Mitt tips (om du har en webbplats med fler än 1 besökare per dag) är att göra ett script som körs samtidigt som de vanliga filerna på din webbplats.
Denna applikation känner av om det är dags att skicka ut en påminnelse eller ej. Då slipper du pyssla med schemaläggning av binärfiler m.m. som du kanske inte har behörighet till på ett webbhotell.
Mitt tips (om du har en webbplats med fler än 1 besökare per dag) är att göra ett script som körs samtidigt som de vanliga filerna på din webbplats.
Denna applikation känner av om det är dags att skicka ut en påminnelse eller ej. Då slipper du pyssla med schemaläggning av binärfiler m.m. som du kanske inte har behörighet till på ett webbhotell.
mm, det var min första tanke oxå. Kan hålla, om inte annat ifall påminnelsen endast är datumbunden och inte är beroende av en viss tid...
Jag skulle löst det så här, förutsatt att jag kan köra cron-script (eller via schemaläggaren) på servern:
Vid en given tidpunkt på dygnet körs ett script som kontrollerar i databasen vilka påminnelser som behöver skickas ut, och då skapar ett mail som skickas till dessa.
Förslagsvis ligger en "deadline" plus mailadressen i databasen.
Utföra regelbundna städuppgifter
Nu har jag hållit på med php några år, och jag använder flera metoder för att göra bakgrundsjobb/städjobb.
En metod är att sist i php-scriptet, efter att </html> skickats till besökaren, utföra städjobbet eller vad det nu är, tex. radera tillfälliga filer eller uppdatera användarens data i userfilen eller nåt sånt. Nackdelen är att fastän </html> och flush(); har skickats så stängs inte tcp-sessionen mot besökarens webbläsare som tror att allt data inte kommit, förrän php-scriptet körts klart. Det verkar inte finnas nån lösning på detta, idealet vore att php hade ett kommando för att stänga tcp-sessionen men ändå fortsätta utföra kommandon. Man bör också ha ignore_user_abort(true); så att inte användaren (genom att klicka avbryt i webbläsaren) kan stoppa scriptet innan det körts klart.
Jag kör (från en windowsdator) schemaläggaren som var 10:e minut med NetCat -programmet anropar flera php-sidor på olika ställen, som utför olika jobb, tex. skicka mail med uppgifter, städa i filer, och liknande. De php-script som anropas kollar först att scriptet inte körts de senaste 9 minuterna. Det är inte alldeles kritiska saker som körs på detta sätt, för det kan ju hända att windowsdatorn eller dess internetanslutning är nere.
Mvh Mi Cro
Re: Utföra regelbundna städuppgifter
miccro skrev:
En metod är att sist i php-scriptet, efter att </html> skickats till besökaren, utföra städjobbet eller vad det nu är, tex. radera tillfälliga filer eller uppdatera användarens data i userfilen eller nåt sånt. Nackdelen är att fastän </html> och flush(); har skickats så stängs inte tcp-sessionen mot besökarens webbläsare som tror att allt data inte kommit, förrän php-scriptet körts klart. Det verkar inte finnas nån lösning på detta, idealet vore att php hade ett kommando för att stänga tcp-sessionen men ändå fortsätta utföra kommandon. Man bör också ha ignore_user_abort(true); så att inte användaren (genom att klicka avbryt i webbläsaren) kan stoppa scriptet innan det körts klart.
Kör bakgrundsjobbet i en annan tråd då.