Dagelijks event MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

G Jansma

G Jansma

26/10/2016 13:33:22
Quote Anchor link
Hallo,

Ik wil op mijn website een stand bijhouden waarin alle punten uit het afgelopen jaar tellen. Nou wil ik dat mijn database elke dag om 0:00 die stand vernieuwd. Dus de oude deleten, en een nieuwe inserten. Ik heb al een beetje rondgezocht en kwam Event Scheduler tegen, maar stuitte al direct op een probleem. Ik zag dat je dat eerst aan moet zetten met ..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET GLOBAL event_scheduler = ON


Dat heb ik geprobeerd in PHPmyadmin, maar daarvoor heb je SUPER privilege nodig. In DirectAdmin staat alles bij modify privileges op Yes. Ik las verder dat je dan aan kan zetten met ..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
GRANT EVENT ON *.* TO [username]@[localhost]


.. maar dan krijg ik steeds #1044 - Access denied for user ... Iemand die me verder op weg zou kunnen helpen?

En dan had ik nog een aantal vraagjes:
- Moet ik zo'n event query invoeren in PHPmyadmin, of via een PHP pagina?
- Waar kan ik zien welke eventen er aanstaan?
 
PHP hulp

PHP hulp

24/12/2024 17:42:37
 
Ben van Velzen

Ben van Velzen

26/10/2016 13:45:11
Quote Anchor link
Grants worden toegewezen door een user die grants mag uitdelen, meestal een superuser.
>> - Moet ik zo'n event query invoeren in PHPmyadmin, of via een PHP pagina?
phpMyAdmin is een PHP pagina.
>> - Waar kan ik zien welke eventen er aanstaan?
SHOW EVENTS. Heeft uiteraard wel het EVENT privilege nodig.
 
G Jansma

G Jansma

26/10/2016 14:03:25
Quote Anchor link
Maar ben ik als enige user dan niet gewoon de superuser? Of hoe zit dat in elkaar? En hoe kan ik zoiets dan wel aanzetten? Ik heb inmiddels wel gevonden waar 'Gebeurtenissen' staat, maar als ik daar de scheduler aan wil zetten krijg ik dezelfde error.
 
Pg Vincent

Pg Vincent

26/10/2016 14:11:57
Quote Anchor link
SUPER is een recht dat je alleen kunt krijgen op je eigen server, dus als je dit wilt uitvoeren op een gehoste server dan is de kans groot dat je dit nooit voor elkaar gaat krijgen.

Voor tijd-afhankelijke taken bestaat sinds jaar en dag de cron, en hoe je vanuit een cronjob een PHP script kunt starten wordt in duizenden artikelen beschreven.
Groot voordeel is dat het op elke server aanwezig is, gegarandeerd, en dat je alle scripts in alle talen kunt starten vanuit dezelfde plek. Dat is belangrijk want als je dit soort dingen op meer plekken gaat doen dan raak je vanzelf de weg kwijt en er is niets frustrerenders dan je rot te zoeken naar welk script toch die ene tabel telkens bijwerkt, om je na een uur of twee te herinneren dat je dat op een manier had gedaan...
 
G Jansma

G Jansma

26/10/2016 14:22:04
Quote Anchor link
Kijk aan, dat cronjob kende ik nog niet. Als ik het goed begrijp kan ik daar dus een PHP-pagina ingeven die om de aangegeven tijd wordt bezocht/uitgevoerd?

Toevoeging op 26/10/2016 14:53:03:

Heb het voor elkaar, bedankt maar weer!
 
Pg Vincent

Pg Vincent

26/10/2016 15:05:01
Quote Anchor link
Quote:
Als ik het goed begrijp kan ik daar dus een PHP-pagina ingeven die om de aangegeven tijd wordt bezocht/uitgevoerd?


Je kunt een pagina laten bezoeken, via wget, maar dat is meer een hack dan een oplossing.
Het is vele malen beter om het script gewoon direct vanuit de cron te laten aanroepen. Je doet immers feitelijk gewoon een administratieve taak en dat hoort niet via de webserver te lopen.
 
Aad B

Aad B

26/10/2016 19:09:08
Quote Anchor link
Pg Vincent op 26/10/2016 15:05:01:
Je kunt een pagina laten bezoeken, via wget, maar dat is meer een hack dan een oplossing.
Niet per definitie. Middels wget kunnen prima administratieve taken uitgevoerd worden. Ik haal daarmee -legaal- elke nacht via de cron (linux script) een vijtiental .csv bestanden op bij een aanbieder en laad de inhoud -zonder php- middels MySQL import in de tabellen.
Gewijzigd op 26/10/2016 19:10:34 door Aad B
 
- Ariën  -
Beheerder

- Ariën -

26/10/2016 19:15:20
Quote Anchor link
En cronjobs zijn ook ideaal voor backup-doeleinden of geautoamtiseerde mailings.
Gewijzigd op 26/10/2016 19:15:37 door - Ariën -
 
Pg Vincent

Pg Vincent

26/10/2016 19:24:33
Quote Anchor link
Quote:
Niet per definitie. Middels wget kunnen prima administratieve taken uitgevoerd worden. Ik haal daarmee -legaal- elke nacht via de cron (linux script) een vijtiental .csv bestanden op bij een aanbieder en laad de inhoud -zonder php- middels MySQL import in de tabellen.


Wat ik bedoel is dat het in de PHP wereld nogal eens voorkomt dat men vanuit de crontab een wget start die een pagina op dezelfde server oproept om iets te laten doen. Dat is een hack, want als het script al op die server staat dan is wget alleen maar een lange omweg.

Maar ik zou persoonlijk ook niet direct een wget starten vanuit een cron om bestanden te downloaden, al is het maar omdat ik meer foutafhandeling zou willen dan een mailtje van de cron.
 
Thomas van den Heuvel

Thomas van den Heuvel

27/10/2016 15:33:01
Quote Anchor link
Een mogelijk groter probleem bij dat soort constructies is dat dit soort scripts rechtstreeks aanroepbaar zijn (via een browser of wat dan ook), wat lang niet altijd wenselijk is.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.