Cronjobs und PHP
Michael W.
- php
0 Henk Strobel0 Christian0 BerndG
Hallo,
soweit kein problem, aber so wies aussieht kann ein cronjob keine schleifen innerhalb einer php-datei ausführen.
ist das problem bekannt?
MfG
Michael W.
Hallo,
soweit kein problem, aber so wies aussieht kann ein cronjob keine schleifen innerhalb einer php-datei ausführen.
ist das problem bekannt?
Mir nicht. Habe mehrere cronjobs mit PHP-Skripten laufen, auch mit Schleifen (for,foreach) und ohne Probleme.
Henk
OK, aber DatenBank-Connects funktionieren bei mir nicht!
ich bin gerade am austesten wodran das leigt. zuerst dachte ich das das an den includes liegt - tut es aber nicht. ich bekomme einfach keinen connect hin einen einfachen connect.
<?php
############ test2 - dbconnect #################
$host = 'localhost';
$user = 'xx'; //geheim
$pass = 'xx'; //noch geheimer
$db = $user;
$table = 'test2';
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db, $link);
$result = mysql_query("SELECT * FROM $table");
$t = date(d);
$mo = date(m);
$j = date(y);
$st = date(H);
$mi = date(i);
$time = "$t.$mo.$j ($st:$mi)";
$a = "1";
$b = "djwoelk";
$c = "test";
$d = $time;
$e = "none";
$f = "ja";
$query = "insert into test2 (a,b,c,d,e,f) values('$a','$b','$c','$d','$e','$f')";
mysql_query($query) or die("MySQL-Fehler beim hinzufügen");
mysql_close($link);
###############################################
?>
wenn ich es von hand ausführe gehts.
ist _das_ problem evtl. bekannt?
MfG
Michael W.
Hi!
wenn ich es von hand ausführe gehts.
ist _das_ problem evtl. bekannt?
Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)
Henk
Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)
wie denn?
Nee. wie wär's, wenn Du Dir mal eventuelle Fehlermeldungen zumailst. Soll schon häufiger geholfen haben ;-)
wie denn?
z.B. kannst Du alle Funktionen in if-schleifen aufrufen, falls diese FALSE zurückgeben, kannst Du Dir eine entsprechende Meldung per mail() zukommen lassen, dann weisst Du schonmal, welche Funktion gescheitert ist. Oder Du schreibst die Meldungen in eine Datei, das geht natürlich auch
So kann das aussehen:
if (!mysql_select_db($db, $link))
{
mail("usw....
}
else
{
# mysql_seselct_db war erfolgreich, also weiter im text...
[...]
}
Gruß Henk
ICH RAFFS NICHT!!!!!!!!!!
<?php
mail("djwoelk@gmx.de", "CRON-TEST", "TEST", "From: djwoelk@gmx.de");
$a = "a";
$b = "b";
$c = "c";
$d = "d";
$e = "f";
$f = "g";
$host = 'localhost';
$user = 'xx';
$pass = 'xx';
$db = $user;
$table = 'test2';
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db, $link);
$result = mysql_query("SELECT * FROM $table");
if (!mysql_select_db($db, $link))
{
mail("djwoelk@gmx.de", "ERROR", "TEST", "From: djwoelk@gmx.de");
}
else
{
$query = "insert into test2 (a,b,c,d,e,f) values('$a','$b','$c','$d','$e','$f')";
mysql_query($query) or die(mysql_error());
mail("djwoelk@gmx.de", "NONE ERROR", "TEST", "From: djwoelk@gmx.de");
}
mysql_close($link);
?>
die mail mit dem betreff: "CRON-TEST" bekomme ich, aber alles innerhalb der if-else abfrage nicht. weder "ERROR" noch "NONE ERROR".
und von hand gehts!
MfG
Michael W.
Ich weiß echt nicht mehr weiter
Ich weiß echt nicht mehr weiter
Tja, tut mir ja leid. Aber da weiß ich so spontan auch wirklich nicht mehr weiter. und ein Ansatz zur Lösung des Problems fällt mir leider auch nicht mehr ein...
Vielleicht sagt ja mal jemand anders was dazu?
Henk
Hallo Michael,
mysql_query($query) or die(mysql_error());
Ich rate mal: Hier stirbt das PHP-Script, indem der Query fehlschlägt. Dadurch bekommst Du nie eine Mail. Mache das lieber so:
$res = mysql_query ($query);
if (!$res) {
mail('djwoelk@gmx.de', 'MYSQL-Fehler', mysql_error (), 'From: djwoelk@gmx.de');
exit;
}
Christian
OK, aber DatenBank-Connects funktionieren bei mir nicht!
ich bin gerade am austesten wodran das leigt. zuerst dachte ich das das an den includes liegt - tut es aber nicht. ich bekomme einfach keinen connect hin einen einfachen connect.
Häng bei jeder Connect var mal einen OR die(mysql_error());
dahinter und guck ob da was net klappt.
Gruß
Christian
» ist das problem bekannt?
mir auch nicht, läuft wie ne eins, und das sind mega-schleifen ;-)
Hallo,
kurz mal was grunsätzliches zu cronjobs.
Cronjobs laufen defaultmäßig nicht ungedingt
in der gleichen Umgebung wie Jobs, die ich nach
einem normalen 'login' starte.
D.H. Env-Variablen können gesetzt oder nicht gesetzt sein
oder sogar andere Belegungen haben.
So also sicherstellen, dass der cronjob in der 'richtigen'
Umgebung läuft.
Gruss
Bernd