Toon posts:

[mysql] om de week een query

Pagina: 1
Acties:

Verwijderd

Topicstarter
is het mogelijk elke week automatisch een mysql query uit te voeren?
ik zou namelijk elke week een collumn in een table willen updaten en alle 'views' naar 0 updaten..


dit wil ik wekelijks laten doen..automatisch..
hoe is dit mogelijk?

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Onder unices:

man crontab

Verwijderd

Topicstarter
Op maandag 03 december 2001 18:48 schreef [ti] het volgende:
Onder unices:

man crontab
hmm en nu in newbie taal? :D

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Welk operating systeem gebruik je hiervoor?

Als je iets van 'n unix achtige gebruikt (linux bv.) dan gebruik je daar je crontab voor. 'man crontab' is het commando om daar de manual van op te vragen, hier staat alle informatie daar over in. Daarin kun je dus om de x tijd een programma/shellscriptje laten starten. Dat shellscriptje laat je die query runnen, en klaar.

Verwijderd

Topicstarter
ja de server waar mn site op staat draait onder linux..
maar zelf snap ik hier weinig van..
en van shell access enzo weet ik heeel weinig..


maar ik heb iig wel SSH en TELNET..enz.

Verwijderd

Topicstarter
ik vond dit:


"Crontab is the program used to install, deinstall or list
the tables used to drive the cron(8) daemon in Vixie Cron.
Each user can have their own crontab, and though these are
files in /var, they are not intended to be edited
directly.

If the allow file exists, then you must be listed therein
in order to be allowed to use this command. If the allow
file does not exist but the deny file does exist, then you
must not be listed in the deny file in order to use this
command. If neither of these files exists, then depending
on site-dependent configuration parameters, only the super
user will be allowed to use this command, or all users"


maar hiermee is me nog niet echt duidelijk geworden hoe ik dit dan kan gebruiken om te doen wat ik wil doen

  • [ti]
  • Registratie: Februari 2000
  • Niet online

  • [ti]
  • Registratie: Februari 2000
  • Niet online
Je maakt dus zegmaar een shell scriptje wat die query voor je uitvoert.

shellscriptje bv:
code:
1
2
3
#!/bin/sh

/usr/bin/mysql -u pietje -pffnietdus --exec='delete from tabelmoetleeg;' databasenaam >/dev/null 2>&1

En die laat je dan vanuit crontab aanroepen. In de man page / die tutorial page staat daar wel genoeg info over hoe je dat moet doen.

Verwijderd

Topicstarter
thnx tis gelukt denk ik :)

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Hou er rekening mee dat die -p wel eens in ps kan blijven staan (weet zo niet of mysql onder linux dat eruit sloopt), zodat je password openlijk bekend kan zijn bij eventuele users.

Altijd slim om even te controleren.

  • [ti]
  • Registratie: Februari 2000
  • Niet online
die -p wordt vervangen door -pxxxxxxx .. Geheel automagtisch. Zie je dus niet in je processlist of met 'w' 'n password rondzweven.

Verwijderd

Topicstarter
Op maandag 03 december 2001 19:08 schreef [ti] het volgende:
Je maakt dus zegmaar een shell scriptje wat die query voor je uitvoert.

shellscriptje bv:
code:
1
2
3
#!/bin/sh

/usr/bin/mysql -u pietje -pffnietdus --exec='delete from tabelmoetleeg;' databasenaam >/dev/null 2>&1

En die laat je dan vanuit crontab aanroepen. In de man page / die tutorial page staat daar wel genoeg info over hoe je dat moet doen.
dit is wel totaal wat anders dan wat er in die tutorial staat..

ik heb nu gewoon gedaan wat er in die tut staat..
namelijk een cron file gemaakt met daarin:

0 0 * * * /crons/resetdailyviews.php3

die heb ik dmv telnet gecronned

en ik heb resetdailyviews.php3 geupload naar de map crons en ik heb hem nu dus dagelijks ingesteld..
en kreeg net een mailtje van crons deamon dat dat bestand crons/resetdailyviews.php3 niet bestond..
maar ik heb hem nu denk ik wel goed geupload dus ik denk dat mijn methode ook wel werkt

  • [ti]
  • Registratie: Februari 2000
  • Niet online
1. Je moet het volledige path opgeven. Als je als user 'pietje' dit script gemaakt hebt, dan zal het waarschijnlijk iets als /home/pietje/scripts/resetdailyviews.php3 worden.

2. php3 wordt niet zomaar 'uitgevoerd'. Je zou bovenin de .php3 "#!/usr/bin/php3 -q" (zonder quotes) kunnen zetten, maar dit is imho niet de ideale oplossing.

Als ik het goed begrepen heb wil je 1 query uitvoeren. Stel:

Query: delete from views
Database: website
user: pietje
password: slut

Je maakt dan een bestand aan met het volgende erin:
code:
1
2
#!/bin/sh
/usr/bin/mysql -u pietje -pslut --exec='delete from views;' website >/dev/null 2>&1

en noemt dit resetviews.sh - dit bestand plaats je in /home/pietje/scripts/ en chmod je naar 755 (read/exec voor group/world, read/exec/write voor owner) met het commando: "chmod 755 resetviews.sh".

Vervolgens edit je als user pietje je crontab met "crontab -e" en plaats je daarin:
code:
1
0 0 * * * /home/pietje/scripts/resetviews.sh

Natuurlijk zul je wat path namen e.d. aan moeten passen, maar een makkelijkere walkthrough als dit kan ik niet schrijven.
Pagina: 1