php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.10.2007, 19:07  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard cron job macht zicken

ich habe heute zum ersten mal versucht mich in cronjobs einzulesen und einen ebensolchen auszuprobieren.

im plesk habe ich die möglichkeit einen cronjob anzulegen und habe das auch getan. um zu testen ob alles passt habe ich eine php datei "cronjob.php" angelegt, welche in eine textdatei "cronjob.txt" den wert time() einträgt. mit der datei "cronjobtest.php" lese ich diesen wert aus und vergleiche ihn mit der aktuellen time().

im plesk habe ich die werte für die zeit eingegeben (alle minuten) und den pfad zum skript bei befehl.
in der crontabs/cronjobs übersicht bei plesk ist dann folgendes gestanden:

Zitat:
* * * * * /srv/www/vhosts/meinedomain.com/subdomains/cms/httpdocs/cronjob.php
die dateien haben alle die vollen rechte 777.

jedoch bekomme ich immer ein mail mit folgender meldung dass die rechte nicht passen würden:

Zitat:
/bin/sh: /srv/www/vhosts/meinedomain.com/subdomains/cms/httpdocs/cronjob.php: Permission denied
habe ich da irgendwo einen fehler drin? bitte nicht schimpfen wenn es was banales ist, aber ich habe wie gesagt heute zum ersten mal mit cronjobs zu tun.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.10.2007, 19:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hat der Ordner auch die vollen Rechte, so dass die cronjob.txt angelegt werden darf?
Zergling-new ist offline  
Alt 23.10.2007, 20:05  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

also das ganze liegt in meinem account im root ordner drin. dieser heisst httpdocs. der hatte standardmässig 750, ich hab ihn dann kurz auf 777 gesetzt, jedoch auch ohne erfolg. lädt er trotz konsole, bzw. gui eingabe eine datei rauf?

wie gesagt. den ordner httpdocs hab ich auch auf 777 gesetzt, sowie alle betroffenen files. der server pfad stimmt auch. jedoch bekomme ich immer die fehlermeldung bezüglich permission denied.

die cronjob.txt hab ich selber angelegt. ist ja nur die testdatei.

hier nochmal zur übersicht (die files haben alle die rechte 777 und wurden von mir upgeloaded):

cronjob.php (wird vom cronjob aufgerufen):
PHP-Code:
<?php
$file 
'cronjob.txt';
$data time();

$fo fopen($file,"w+");
fputs($fo$data);
fclose($fo);
?>
cronjob.txt (zum speichern der daten der cronjob.php):
Zitat:
1193143044
cronjobtest.php (für mich zur kontrolle ob alles korrekt läuft):
PHP-Code:
<?php
$file 
'cronjob.txt';
$fo fopen($file,"r+");
$output fgets($fo);
fclose($fo);
echo 
'<table>
        <tr>
          <td>Letztes Update durch den CronJob: </td>
          <td>'
.date('Y-m-d H:i:s'$output).'</td>
        </tr>
        <tr>
          <td>Aktuelle Daten: </td>
          <td>'
.date('Y-m-d H:i:s').'</td>
        </tr>
      </table>'
;
?>
ich habe jetzt folgende aussage gefunden, welches für mich auch zutreffen würde, denn bei mir wird ja auch /bin/sh verwendet:
Zitat:
standardmässig ist das dann /bin/sh und /bin/sh ist kein php-interpreter. Normalerweise gibt es für sowas die shebang-zeile aber das funktioniert mit php nicht.
das wäre ja ganz lustig wenn man mittels cron jobs keine php dateien aufrufen könnte?!?! ich kann mir nicht vorstellen dass ich der erste bin der mittels eines cron-jobs eine php datei aufrufen möchte oder?

EDIT:
das ganze wird immer noch witziger. ich habe jetzt einfach mal probiert vor dem pfad php hinzuschreiben weil ich das irgendwo gelesen habe. dann habe ich noch die cronjop.php geändert:
PHP-Code:
<?php
mail
('meine.email@adres.se''cronjobtest''das ist ein cronjobtest und er hat funktioniert');

$file 'cronjob.txt';
$data time();
$fo fopen($file,"w+");
fputs($fo$data);
fclose($fo);
?>
jetzt erhalte ich zwar das email durch die cronjob.php, jedoch keine benachrichtigungsemail mehr über den ausgeführten cronjob und das restliche script wird auch nicht ausgeführt. kann es sein dass der mail befehl auch ohne php funktioniert und er diesen deshalb ausführt, das restliche skript aber nicht?
es funktioniert aber sehr wohl wenn ich es über den browser direkt aufrufe!

irgendwo habe ich eben mal gelesen dass man im cronjob befehl so vorgehen muss: /pfad/zu/php /pfad/zum/script.php
aber woher bekomme ich denn den pfad zu php? den finde ich in der phpinfo nämlich nicht?!

schon ein wenig sonderbar das ganze oder?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 23.10.2007, 22:01  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Benutz für $file mal einen absoluten Pfad, nur testweise.
Zergling-new ist offline  
Alt 23.10.2007, 23:27  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke. jetzt hat es tatsächlich funktioniert. komisch dass er mir da keine fehlermeldung gemailt hat. denn sonst mailt er ja wirklich jeden fehler. mit dem absoluten pfad funktioniert der cronjob jetzt. als pfad zu php habe ich jetzt einfach php eingegeben und es funktioniert.

eine kleine frage diesbezüglich hätte ich noch. ich möchte mit diesem cronjob die datenbank einer beispielseite täglich leeren und mit den standarddaten füllen. das stellt eigentlich kein problem dar. allerdings möchte ich auch den ordner images leeren und mit den standardbildern füllen.

soll ich einen ordner st_images mit den standardbildern am server anlegen und dann mittels cronjob vorher den images ordner löschen und danach die bilder aus dem st_images rüberkopieren?
wenn ja muss ich da irgendwie den browser veranlassen kein timeout zu machen, denn das kopieren der bilder könnte schon eine weile dauern oder?

1000 dank nochmal für die lösung des problems.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 24.10.2007, 00:01  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ein Cronjob läuft nicht im Browser, gegebenenfalls das set_time_limit(0) setzen.
Wenn der Kopiervorgang lange dauert unbedingt zuerst kopieren, dann löschen (und anschließend Ordner umbenennen). Eine Nicht-Verfügbarkeit der Bilder ist nicht notwendig und sinnvoll.
Zergling-new ist offline  
Alt 24.10.2007, 00:15  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke für die tipps. set_time_limit(0) hätte ich gesetzt. allerdings hätte ich wohl anders gehandelt. als erstes hätte ich den ordner images gelöscht, neu erstellt und dann die bilder rüberkopiert.

warum genau meinst du sollte ich anders vorgehen? und was meinst du mit
Zitat:
Eine Nicht-Verfügbarkeit der Bilder ist nicht notwendig und sinnvoll.
?
nicht-verfügbarkeit der bilder? auf der webseite? d.h. eine nicht-verfügbarkeit ist nicht notwendig -> eine verfügbarkeit ist notwendig und sinnvoll?
oder habe ich die doppelte negation falsch interpretiert? kann gerade nicht recht folgen. ist doch schon spät.

edit: meinst du so:
ordner1 = originalbilder
ordner2 = demoordner

1. ordner1 kopieren -> ordnerX
2. ordner2 umbenennen in ordnerY
3. ordnerX umbenennen in ordner2 (orignalbilder sind also wieder da)
4. ordnerY löschen
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 24.10.2007, 00:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Die Reihenfolge "Löschen, Kopieren" hat 2 Problematiken:
1.) Während dem Kopieren ist der gelöschte Content (in deinem Fall die Bilder) nicht verfügbar. Um 3 Uhr morgens ist das vielleicht akzeptabel, aber wenn dann grade ein Crawler oder nachtaktiver Mensch unterwegs ist, ist das ärgerlich.
2.) Geht beim Kopieren was schief, ist die Seite am Arsch. Bis du das merkst sind einige Stunden vergangen, es sei denn dein Webserver kommuniziert mit deinem Wecker.

Deshalb mach die riskanten (und das sind Dateioperationen immer) und langwierigen Operationen zuerst. Kopier sie in einen temporären Ordner in der Nähe des Zielordners. Erst wenn das fertig ist beginnst du mit der Umstellung: Zielordner löschen, TMP-Ordner umbenennen.
Zergling-new ist offline  
Alt 24.10.2007, 00:44  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

ok. danke. also bin ich mit meiner obigen ausführung richtig gelegen oder? werde das gleichmal umsetzen, bzw. versuchen es umzusetzen.

ORDNER_ORIG_TEMP anlegen
bilder von ORDNER_ORIG in ORDNER_ORIG_TEMP kopieren
ORDNER_DEMO in ORDNER_DEMO_TEMP umbenennen
ORDNER_ORIG_TEMP in ORDNER_DEMO umbenennen (somit sind die bilder wiederhergestellt)

dann noch ORDNER_DEMO_TEMP löschen und gut ist es. ist das soweit jetzt korrekt?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 24.10.2007, 00:46  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich verstehe nicht so ganz was der Unterschied zwischen ORDNER_ORIG und ORDNER_DEMO ist, aber ich glaube du hasts verstanden
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
permanente Fehlermeldung beim cron schiff PHP Tipps 2006 4 29.08.2006 13:54
Kein Cron Job sondern Betriebssystem Cheesy PHP Tipps 2006 8 18.05.2006 11:59
[Erledigt] Cron bricht ohne Fehler einfach ab PHP-Fortgeschrittene 5 08.09.2005 18:06
Apache timeout bei einem Cron mit riesiger Datenmenge PHP-Fortgeschrittene 12 12.04.2005 15:29
Cron Jobs Apfeltyp PHP Tipps 2004-2 9 06.12.2004 22:33
PHP-Dateien per Cron ausführen PHP Tipps 2004 0 23.07.2004 12:05
Cron Job PHP Tipps 2004 7 07.06.2004 02:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
plesk cronjob bin/sh permission denied, plesk10 pfad php interpreter, plesk 10 cronjob welchen absoluten pfad, plesk cronjob läuft nicht php, plesk cronjob ausführen aber wie ? permision denied, plesk set_time_limit, plesk 10 cronjob wird nicht ausgeführt, job in cronjob tut was anderes wie von hand, php-datei ausführen cron pleskj, direkt browser cronjob php fehlerhaft, plesk 10 default cron jobs, sh datei plesk permission denied, crontab.txt permission denied, cronjob set_time_limit(0); geht nicht, plesk 10 cronjob /bin/sh permission denied, cronjob php fopen denied, plesk cronjob löschen, übersicht über ausgeführte cronjobs, cron \.php\' (permission denied).\, cronjob php sinnvoll

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.