Problem mit Cronjobs

  • #1
C

cultsibi

Bekanntes Mitglied
Themenersteller
Dabei seit
19.03.2005
Beiträge
64
Reaktionspunkte
0
Ich benutze schon seit ca. 2 Monaten Cronjobs, die mir jede Stunde bestimmte Daten uploaden. Allerdings kam es in letzter Zeit immer wieder vor, dass meine Scripte mitten im upload abgebrochen wurden. Mein Hoster sagte mir dann, dass ich den Umweg über den Apache vermeiden sollte.Bis dahin benutze ich folgende Funktion

5 * * * * lynx -dump . . . . /update.php?server=1

Er meinte, das ich das ganze auch mit dem Befehl->php' machen könnte und die Scripte dadurch nicht mehr abgebrochen werden würden. Allerdings müsste ich dann den Pfad vom Quellverzeichnis des Servers angeben

5 * * * * php var/www/webXXX/html/.../update.php?server=1

Das Ergebnis war, das sich garnichts mehr tat.
Mir kam der gedanke, das die Übergabe der Parameter Probleme machen könnte. So schrieb ich das Script um, und versuchte es nochmal.

5 * * * * php var/www/webXXX/html/.../update1.php?server=1

Wieder passierte garnichts.
Nach einiger Recherche im Internet fand ich den Befehl->/usr/bin/php'. Bei diesem Befehl kann man Parameter übergeben. Allerdings mit einem Leerzeichen zwischen dem Pfad und dem Parameter.

5 * * * * php var/www/webXXX/html/.../update.php server=1

Anscheinend war ich garnicht auf der falschen Spur, da er die Datei nun fand. Zu allem trotz konnte er aber die config.php nicht öffnen, welche in diesem Script included war.
Wenn der Cronjob die Datei also nicht includen konnte, was mir persönlich schon sehr komisch vorkam, kopierte ich den kompletten Inhalt der config.php in mein Uploadscript.

5 * * * * php var/www/webXXX/html/.../update.php server=1

Nun machte er wieder Stress bei der ersten PHP-Funktion, und zwar mysql_connect
--> Fatal error: Call to undefined function: mysql_connect() in...



Nach einer sehr langen gestrigen Nacht und sehr viel Kaffee will ich jetzt einfach nur noch, das dieses Script funktioniert.

Zusatzinformationen:
1.) Jedes der obigen Scripte funktioniert Problemlos, wenn man es durch einen Browser aufruft
2.) In diesem problematischen Uploadscript befinden sich unter anderem ein paar Zeilen html-Code


mfg
cultsibi
 
  • #2
IMHO solltest du sowieso für Cronjobs seperate Scripte nutzen, HTML hat da nix verloren ;)

Was passiert denn, wenn du dich mal Stück für Stück der Sache mit ein paar test-scripten nähern würdest, könntest du evtl. den Fehler besser einkreisen.

z.B. test1.php
Code:
<?php
<?
if($link = mysql_connect(localhost,xxxx,xxxx)) {
  echo Connect ist OK !! \n;
}
else {
  die(Kein Connect !! \n);
}
?>

jetzt das Script aufrufen => php pfad/zur/datei/test1.php

wenn das klappt, kannst du ja im nächsten Schritt die DB auswählen usw.
 
  • #3
Was würde mir das bringen?

Mit->lynx -dumb .......' hat es doch immer Funktioniert. Es gab bloß ab und zu Probleme, da der Apache Neugestartet wurde, so wie mir mein Hoster berichtet hat.

Es muss doch einer wissen wie man Cronjobs schreibt...
 
  • #4
Bei der Lynx-Version gehst du ja, wie dein Hoster schon sagt, den Umweg über Lynx und Apache, wenn du das Script direkt mit php aufrufst, wird das direkt vom PHP-Interpreter abgearbeitet, d.H. alles was nicht unbedingt irgendetwas mit der gewünschten Funktion zu tun hat, würde ich mal ganz pauschal rausschmeißen.

OK, was hat mein Test-Script damit zu tun ???
Ganz einfach, wenn das funktioniert, kannst du sicher sein, das
a) der Scriptaufruf mit php funktioniert und
b) der Connect zur DB funktioniert.

Und wenn das funktioniert, liegt der Fehler mit 100000%iger Sicherheit in deinem Script.

Der Cronjob sieht BTW ok aus ;), obwohl ich mir nicht sicher bin ob er nicht evtl. so aussehen müßte:

5 * * * * php /var/www/webXXX/html/.../update.php?server=1
 
  • #5
Hi

Die meisten würden wohl einen Cronjob in Perl schreiben, deswegen dürftest du über PHP nicht viele Informationen finden.
Hab es von der Konsole auch nur vor langer Zeit mal probiert.

Gruß, Michael
 
  • #6
Ok Conny, ich werde das ganze jetzt auf deine Art und Weise ausprobieren.

Dazu würde ich aber gerne vorher noch wissen, ob ich
1.) vorne nun->php' oder->/usr/bin/php' schreibe?
2.) den Pafd vom Quellverzeichnis des Servers (/var/www/webXXX), oder von-> angebe?
3.) die Parameter mit einem Leerzeichen oder ganz normal mit einem Fragezeichen zwischen der Datei und den Parametern angebe?
 
  • #7
  • #8
Hab die Lösung gefunden.

Man muss in dem Script, welches per Cronjob aufgerufen wird die Pfade vom Quellverzeichnis her angeben.
 
Thema:

Problem mit Cronjobs

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben