Dagelijks event MySQL
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 ..
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 ..
.. 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?
>> - 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.
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.
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...
Toevoeging op 26/10/2016 14:53:03:
Heb het voor elkaar, bedankt maar weer!
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.
Pg Vincent op 26/10/2016 15:05:01:
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.Je kunt een pagina laten bezoeken, via wget, maar dat is meer een hack dan een oplossing.
Gewijzigd op 26/10/2016 19:10:34 door Aad B
Gewijzigd op 26/10/2016 19:15:37 door - Ariën -
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.
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.