Cronjob + php + logfile! Hmmmm

Bash, Shell, PHP, Python, Perl, CGI
paykoman
Posts: 84
Joined: 2006-07-16 14:18

Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-03 22:49

Hallo liebes Forum,

ich schlage mich nun schon eine ganze Weile mit Cronjob rum und könnte mich fürchterlich aufregen :(

Zwischen durch gab es bei den Tests immer wieder Erfolge aber dann wenn es darauf ankommt versagt mein Cronjob (und mein Wissen).

So hier erstmal die Fakten:

Mein Cronjobbefehl:

Code: Select all

*/1   *   *   *   *   php /srv/www/vhosts/domain.de/httpdocs/game/cronjobs/update.php &>> /srv/www/vhosts/domain.de/httpdocs/logs/update.log


Meine update.php

Code: Select all

<?php
error_reporting(E_ALL);
   ini_set('display_errors', 1);
set_time_limit ( "0" );
define ( 'SECURITY', 'SECURITY' );

if($_SERVER['HTTP_HOST'] == "domain.de" OR $_SERVER['HTTP_HOST'] == "www.domain.de" OR $_SERVER['HTTP_HOST'] == "domain.de:80" OR $_SERVER['HTTP_HOST'] == "www.domain.de:80"){
}else $_SERVER ["SERVER_ADDR"] = $_SERVER ["REMOTE_ADDR"];

if ($_SERVER ["REMOTE_ADDR"] == $_SERVER ["SERVER_ADDR"]) {
   include ("../../include/db.php");
   connect_db ();
   include ("../include/functions.php");
   error_reporting(E_ALL);
   ini_set('display_errors', 1);
   $time = time ();
   $result = mysql_query ( "SELECT `id`, `defe...
usw. ...
}
   }
   mysql_close ();
}else echo "IP nicht zul&auml;ssig";

?>



So, nun hat mein Programmeirer dort schon einwenig rumgebastelt und damit ihr nicht völlig verwirrt seit über diesen Anfang der update.php...

Das Script ist so aufgebaut das es gleichzeitig auf 2 Servern laufen kann (der Sinn ist das wir svn nutzen, der online Testserver und der online Liveserver bedienen sich dem selben svn Trunk. Darum ist das Script so ausgebaut das es immer von beiden Servern ausgecheckt werden kann und auch funktioniert (sollte) ).


Meine Probleme sind folgende:
1) Ich erhalte keine Logfile
2) Die Datei wird nicht ausgeführt (eine test.php funktionierte, lag im selben ordner und schickte mir jedesmal eine email bei ausführung).
3) wenn IP Sperre deaktiviert ist funktioniert es, muss aber doch auch mit gehen =(

Ich hoffe ihr habt ein paar Tipps und könnt mir helfen.

MFG: Paykoman

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-03 23:04

Das Script kann so nicht funktionieren, da es per CLI ausgeführt wird und somit die $_SERVER-Variablen nicht belegt werden können.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

paykoman
Posts: 84
Joined: 2006-07-16 14:18

Re: Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-03 23:27

Joe User wrote:Das Script kann so nicht funktionieren, da es per CLI ausgeführt wird und somit die $_SERVER-Variablen nicht belegt werden können.


Hi,

danke für deine Antwort, was ist CLI und was muss ich nun tun um das Script aufrufen zu können?

MFG: Paykoman

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-03 23:36

CLI steht für CommandLineInterface, siehe http://en.wikipedia.org/wiki/Command-line_interface

Entweder Ihr macht das Script CLI-tauglich, oder Ihr ruft das Script über den Webserver statt dem CLI auf. Ersteres sollte für Deinen Programmierer kein Problem sein, Zweiteres lässt sich beispielsweise mit cURL oder wget erledigen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

paykoman
Posts: 84
Joined: 2006-07-16 14:18

Re: Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-04 09:42

Hallo,

hmm das ganze klang jetzt aber iwie grantig xD
Danke dir trotzdem für die Antwort das hilft mir schon weiter denn das per wget zu machen sollte kein Problem sein.

Jetzt wiederum hast du geschrieben das Script CLI tauglich zu machen...
In wie fern ist es denn untauglich per wget aufgerufen zu werden?

MFG: pay

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Cronjob + php + logfile! Hmmmm

Post by Roger Wilco » 2011-02-04 10:04

paykoman wrote:In wie fern ist es denn untauglich per wget aufgerufen zu werden?8

Wie schon von Joe User erwähnt nutzt dein Skript Werte, die ausschließlich bei der Ausführung in einem Webserver-Umfeld gesetzt werden, nicht jedoch wenn du das PHP-CLI verwendest.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-04 10:07

Wenn Ihr das Script per wget aufrufen wollt, kann es so bleiben wie es ist. Nur wenn Ihr es direkt mit /usr/bin/php (so wie oben im Cronjob) aufrufen wollt, dann muss es umgeschrieben werden.

Ich war nicht grantig, sorry.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

paykoman
Posts: 84
Joined: 2006-07-16 14:18

Re: Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-04 10:22

Hi,

habe es jetzt mit wget gelöst funktioniert auch wunderbar bis auf das die logfiles noch recht leer sind was aber an der update.php liegen wird...

Ja schön funktioniert soweit. Hast du vllt. noch ein paar Sicherheitsinfos für mich?

Also wie sicher ist es das vom selben Server per wget aufzurufen, muss ich etwas beachten?

MFG: Paykoman

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-04 10:35

Ich würde den Zugriff auf das Script per deny/allow auf localhost beschränken, damit nicht jeder Hans und Franz das Script aufrufen kann.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

paykoman
Posts: 84
Joined: 2006-07-16 14:18

Re: Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-04 18:02

Hi, ich danke euch für eure Hilfe, Joe User habe Dich mal bei icq geaddet und die matze01 ne pn geschickt...

Nun hätte ich ne weitere Frage...

mein Cronjob:

Code: Select all

*/1   *   *   *   *   wget -q -O /srv/www/vhosts/domain.de/httpdocs/logs/live.log "http://domain.de/game/cronjobs/live.php"   


In der logdatei steht nun immer die letzte Ausführung, da es sich hier um ein Browsergame in Betaphase handelt würde ich die log gerne so haben das er neue Einträge ne Zeile tiefer einträgt so das ich nen Archiv habe und später mal nach schauen kann was die Cronjos so machen können...

Wäre schön wenn ihr ma da noch mal helfen würdet.

Besten Dank,
euer Paykoman

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-04 18:20

Es ist erheblich sinnvoller wenn das Script selbst das Log erstellt, denn dafür ist der -O Schalter von wget einfach nicht gedacht. Oder mit anderen Worten: wget kann Dein Logfile nicht wie von Dir gewünscht führen. Näheres dazu findest Du online im wget-Manual zum -O Schalter unter http://www.gnu.org/software/wget/manual/wget.html


EDIT: ICQ nutze ich derzeit nicht.
Last edited by Joe User on 2011-02-04 18:21, edited 1 time in total.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Cronjob + php + logfile! Hmmmm

Post by Roger Wilco » 2011-02-04 18:38

Code: Select all

wget -qO- http://example.com/ >> /path/to/logfile

Ist aber eher hässlich. Das Skript sollte, wie von Joe User beschrieben, die Logs selbstständig anlegen.

EDIT: Das Flag `-a` gibt es natürlich auch. Dann geht es ohne Output-Redirection.
Last edited by Roger Wilco on 2011-02-04 18:48, edited 1 time in total.

paykoman
Posts: 84
Joined: 2006-07-16 14:18

Re: Cronjob + php + logfile! Hmmmm

Post by paykoman » 2011-02-04 21:42

Hallo,

uhii supi Hilfe von euch freut mich das ihr soviel Anteilnahme habt =)

@matzewe01: Hmm dann schreib mir mal bitte eine PN mit e-mail oder so kann dir das Script durch aus auch zuschicken mit einer kleinen Erklärung...

Würde es nur ungerne hier öffentlich machen (Sicherheit und so).
Dann freue ich mich schon sehr darauf was ich dann lernen kann.

LG: Paykoman

User avatar
Joe User
Project Manager
Project Manager
Posts: 11604
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Cronjob + php + logfile! Hmmmm

Post by Joe User » 2011-02-04 22:09

Roger Wilco wrote:EDIT: Das Flag `-a` gibt es natürlich auch. Dann geht es ohne Output-Redirection.

-a und -o loggen den wget Output (stderr), während -O den Inhalt des Response (stdout) in ein File schreibt.

Das Manual zu -O (Ausschnitt):
...
Use of ‘-O’ is not intended to mean simply “use the name file instead of the one in the URL;” rather, it is analogous to shell redirection: ‘wget -O file http://foo’ is intended to work like ‘wget -O - http://foo > file’; file will be truncated immediately, and all downloaded content will be written there.
...

http://www.gnu.org/software/wget/manual/wget.html
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.