PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cronjob zum ausfuehren einer PHP



RFC|Gul Dukat
03.07.07, 21:27
Ich hoffe das ist das richtige Board. War, zu meiner Suende, lang nicht hier:rolleyes:
Ich habe eine PHP auf meinem Web liegen die alle 10 minuten ausgefuehrt werden soll. Dazu habe ich nen Cron angelegt und das funzt auch soweit. Das Problem ist nur das er mir nun zu jedem interwall ins Verzeichnis 'root' eine Datei schreibt. Das wuerde ich gern unterbinden.
Mein cron sieht derzeit so aus:


0,10,20,30,40,50 * * * * /usr/bin/wget -q http://domain.de/cron.php?var=1 > /dev/null 2>&1

Die Datei die er erstellt ist dann immer eine 'cron.php?var=1.*' Liegt sicher an dem 'wget', aber wie kann ich das anders loesen?
Das Problem ist ja das dann mein 'root' an einem Tag voll ist. Hoffe mir kann jemand helfen.

derRichard
03.07.07, 21:42
hallo!

wget -O /dev/null

dann speicher wget, das brav auf /dev/null.

hth,
//richard

zyrusthc
03.07.07, 21:42
Liegt den das PHP Script auf den gleichen Server ?
Wenn ja solltest du dir php-cli anschauen!

Greeez Oli

RFC|Gul Dukat
04.07.07, 09:42
@derRichard:

Hm. Also mit wget -O wird es nun gar nicht mehr ausgefuehrt.
Also hab jetzt
0,10,20,30,40,50 * * * * /usr/bin/wget -O http://domain.de/cron.php?var=1 > /dev/null 2>&1 drin stehen.
habs auch ohne 2>&1 und/oder ?var=1 versucht, in allen Kombinationen, aber der macht das nicht. Oder kanst du mal den kompletten Befehl geben wie das drin stehen soll?
Mit wget -q gehts ja, aber dann legt der eben die Dateien im root an und das will ich ja unterbinden.

@zyrusthc:

Ja, liegt auf dem gleichen Server. Mit dem CLI sollte auch alles in Ordnung sein. 'whereis php' gibt mir zwar immer nur zur Antwort 'php' aber das macht der auf meinem anderen Server auch, da laeuft das PHP allerdings mit CGI.

@All:

Muss ich unbedingt den cron mit 'wget' anlegen damit der die PHP im Web aufruft oder gibts da ne alternative. wget wird ja eigentlich dazu verwendet um was zu holen, was ja eigentlich auch passiert. Nur schickt der meine Datei dann leider nicht ins "Nichts". :/

zyrusthc
04.07.07, 10:13
Hmmm ich glaube du hast es nicht ganz verstanden worauf ich anspiele...

Du kannst mit php-cli "CommandLineInterface" php-Scripte direkt in der Shell ausführen.

/usr/bin/php /pfad/zum/script.php

Greeez Oli

RFC|Gul Dukat
04.07.07, 10:40
Wenn ich das versuche bekomme ich das hier als Meldung:


/opt/www/php_5.0.2/bin/php /vol1/home/user/domain.de/htdocs/cronfile/cron.php
Could not open input file: /vol1/home/user/domain.de/htdocs/cronfile/cron.php.
:confused:

Wie gesagt geht es ja mit dem cronjob soweit wie ich das angelegt habe. Nur die bloede Ausgabe der Dateien soll verschwinden.

RFC|Gul Dukat
04.07.07, 12:27
So. ich hab das jetyt mit folgenden Eintrag im craontab geloest:


0,10,20,30,40,50 * * * * /usr/bin/wget -q -O cron.php?var=1 http://erosclick.de/cron.php?var=1 > /dev/null 2>&1

Der schreibt war immer noch eine Datei namens 'cron.php?var=1' in /root, aber fuegt keine neuen mehr mit ...var=1.* hinzu, sondern ueberschreibt die vorhandenen. Damit kann ich leben wenn es bei der einen bleibt.
Falls jemand noch eine Idee hat wie man das schreiben der Datei in /root komplett unterbinden kann, wuerde ich mich freuen wenner dies mitteilt. Auf alle Faelle schonmal Danke fuer die bisherige Hilfe. :)

BAzFH
04.07.07, 13:10
[QUOTE=RFC|Gul Dukat;1552842]So. ich hab das jetyt mit folgenden Eintrag im craontab geloest:


0,10,20,30,40,50 * * * * /usr/bin/wget -q -O cron.php?var=1 http://erosclick.de/cron.php?var=1 > /dev/null 2>&1

Warum machst du es nicht so, wie man es dir schon gesagt hat?
Nämlich so:


0,10,20,30,40,50 * * * * /usr/bin/wget -q -O /dev/null http://erosclick.de/cron.php?var=1 > /dev/null 2>&1

Dann schreibt er jegliche Ausgabe nach /dev/null, erstellt keine Dateien und dein Problem ist gelöst. Funktioniert hier einwandfrei.

Andererseits solltest du dein cron.php vielleicht shell-tauglich machen und - wie dir das schon vorgeschlagen wurde - mit dem php-cli Interpreter direkt aufrufen. Das geht nämlich auch.

Gruß
BAzfH

RFC|Gul Dukat
04.07.07, 16:40
Warum machst du es nicht so, wie man es dir schon gesagt hat?
Nämlich so:


0,10,20,30,40,50 * * * * /usr/bin/wget -q -O /dev/null http://domain.de/cron.php?var=1 > /dev/null 2>&1

Dann schreibt er jegliche Ausgabe nach /dev/null, erstellt keine Dateien und dein Problem ist gelöst. Funktioniert hier einwandfrei.


Und genau so mnacht der ueberhaubt nichts. Da liegt ja das Problem. Ich werde nun mal euren 2. Vorschlag in Angriff nehmen.

RFC|Gul Dukat
04.07.07, 17:13
AAAAAAAAhhhhh. Sorry. geht doch mit


0,10,20,30,40,50 * * * * /usr/bin/wget -q -O /dev/null http://domain.de/cron.php?var=1 > /dev/null 2>&1

Hatte das /dev/null vor der url uebersehen. Also funzt.
Danke fuer eure Hilfe. :)

marce
04.07.07, 17:20
... wobei ich das /dev/null nicht machen würde sondern z.B. ein -O log/wget.log - dann kann man nämlich noch Fehleranalyse betreiben, wenn mal was schief gelaufen ist...