Avatar billede straszek Praktikant
04. april 2004 - 14:33 Der er 4 kommentarer og
2 løsninger

cronjob med mysql

Davs

Jeg vil gerne have kørt nedenstå sql forespørgsel hver nat kl. 03.00

Hvordan skal det sættes op (har ingen erfraing med cron, har kun hørt om det)

sql:
mysql_query ("UPDATE medlemmer set medlem_status='indaktiv' where medlem_indmeldt < unix_timestamp(date_sub(current_date, interval 1 year))") or die(mysql_error());
Avatar billede hekatombe Nybegynder
04. april 2004 - 14:40 #1
for generale informationer om cron kan du læse det debianguiden.dk's afsnit om cron (det er nogenlunde det samme uanset hvilken distro du bruger) http://debianguiden.dk/dists/stable/html/cron.html eller du man læse i "man 5 crontab"
Avatar billede straszek Praktikant
04. april 2004 - 14:47 #2
Jeg har brug for lidt mere konkret hjælp
Avatar billede hekatombe Nybegynder
04. april 2004 - 15:00 #3
okay... for at lave et cron-job skriver du, som den bruger du ønsker at jobbet skal køres som "crontab -e", hvis du er root og ønsker at jobbet skal køres som en anden bruger så kan du skrive "crontab -e -u bruger". crontab åbner så brugerens crontab fil, med den editor som er opgivet i miljøvariablen "$EDITOR" og hvis den ikke findes så åbner den det med "vi" (hvis du ønsker at en anden editor skal åbnes så kan du sætte variablen f.eks. med "export EDITOR='nano'".

Når du så er der inde så for venter den at du opgiver føglende:
"minut  time  dag  måned  ugedag  kommando" et eks. kan se sådan ud:
"*/4      3    *  *      0    /usr/bin/php /home/hekatombe/update_mysql.php"
Dette vil få "/usr/bin/php" til at køre php scriptet som ligget i "/home/hekatombe/update_mysql.php" 4 gange i timen, forudsat at timen er 3 (dvs. klokken 3.00 3.15 3.30 og 3.45) alle måneddage (dvs. fra den 1-31 i hver måned) når ugedagen er "0" (dvs. når det er mandag)
og hvis du ønsker at det køres klokken 3.00 alle dage så kan du skrive føglende:

"#minut  time  dag  måned  ugedag  kommando"
"0      3    *  *        *    /usr/bin/php /home/hekatombe/update_mysql.php"
Avatar billede straszek Praktikant
04. april 2004 - 15:01 #4
Det der skal gøres i selv scriptet er:

//connect til mysql
mysql -p

// password skrives 
password

//brug db1
use db1;

//foretag forspørgsel
mysql_query;

UPDATE medlemmer set medlem_udx='on' where medlem_indmeldt < unix_timestamp(date_sub(current_date, interval 330 day));

Hvordan skrives det i scipt form og proppes i crontab???
Avatar billede hekatombe Nybegynder
04. april 2004 - 15:08 #5
Du kan ikke få crontab til at foretage selve "opkaldende" til mysql, men du kan lave et script i php, perl eller i et ligende sprog, som foretager "opkaldet" og kommandoerne, også få crontab til at køre scriptet
Avatar billede hekatombe Nybegynder
04. april 2004 - 20:52 #6
(jeg kom lige i tanke om en måde man også kunne gøre det på som er det du forespørger) som kommandoen i crontab kan du sætte:

echo "UPDATE DIN SQL KOMMANDO" | mysql -u bruger --password=password db1
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester