MyBB.de Forum

Normale Version: Einfacher Task (Write_query) klappt nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.

ps915

Ich komme einfach nicht weiter. Ich möchte einen Query als Aufgabe täglich ausführen. Wenn ich den Query so durch die DB jage, klappt er super und macht genau das was ich möchte. Als Aufgabe klappt er einfach nicht!

Was habe ich übersehen?

PHP-Code:
<?php
# Shoutbox löschen!
function task_clean_shoutbox($task)
{
    global 
$db;
    
    
$db->write_query("DELETE FROM piger_mysb_shouts WHERE CURDATE( ) > FROM_UNIXTIME( shout_date )");
    
add_task_log($task"clean_shoutbox");
}
?>
Wird der Tals überhaupt ausgeführt? Es sollte ja ein Log-Eintrag entstehen.

ps915

Nach dem manuellen Start wurde der Log-Eintrag wird erstellt!
Dann muss das Query aber auch ausgeführt worden sein?

ps915

Nein definitiv nicht! Ich habe spaßeshalber mal einen einfache create Table Befehl getestet! Auch das klappt nicht!
In phpMyAdmin klappen beide ohne Probleme!
Bei einem SQL-Error würden aber kein Log-Eintrag erstellt...
Eine Idee, was das Problem sein könnte, habe ich aber gerade leider nicht.

ps915

Es ist wie verhexxt! Im Grunde muss ich nur den Query ausführen! Ist es möglich per php, also ohne die Funktion von Mybb, eine Datenbankverbindung innerhalb von mybb zu erstellen?
(13.07.2012, 18:55)ps915 schrieb: [ -> ]Nach dem manuellen Start wurde der Log-Eintrag wird erstellt!

Wenn der Task manuell ausgeführt wird, könnte evtl. Deine Einstellung des Cronjob nicht stimmen. Hast Du das mal kontrolliert?

ps915

Wie meinst du das? Wenn ich den Job manuell ausführe läuft er die gleiche Prozedur ab, nur früher als geplant!
Ich wollte nur nachfragen, ob Du sicher bist, dass die Zeiteinstellungen passen....

Mir fällt aber ein, dass ich auch mal so ein Problem hatte, dass eine selbst geschriebene Aufgabe nur manuell ausgeführt wurde, über den Cron aber nicht. Der "Fehler" lag irgendwo im PHP-Code. Mal sehen, ob ich das noch aus dem Langzeitgedächtnis heraus kramen kann.

Auch wenn es eigentlich nichts ausmachen sollte. Ersetze mal nur mal zum Testen
PHP-Code:
$db->write_query("DELETE FROM piger_mysb_shouts WHERE CURDATE( ) > FROM_UNIXTIME( shout_date )"); 
durch
PHP-Code:
$db->delete_query('piger_mysb_shouts''CURDATE( ) > FROM_UNIXTIME( shout_date )');