PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausführung Cron (automatisch) bringt Fehler



Zockervogel
06.06.2009, 22:38
Hi,
leider funktioniert der Cron bei meinem Hoster nicht.

Bei VMS 1 läuft das ohne Probleme:

cd /var/www/webxx/html/losexxxx/crons/ && /usr/bin/php /var/www/webxx/html/losexxxx/crons/hp-lose.klick.php > /dev/null

Bei VMS 1.2.3 habe ich das jetzt wie folgt probiert:

cd /var/www/webxx/html/losexxxx/ && /usr/bin/php /var/www/webxx/html/losexxxx/cron.php?id=1&pw=geheim > /dev/null

und bekomme die Fehlermeldung:

Could not open input file: /var/www/webxx/html/losexxxx/cron.php?id=1

Ist dies ein Zugriffsproblem auf die Datei. Wird das Passwort da nicht übergeben.

Hat hier jemand eine Idee. (ohne wget)

Sebmaster
06.06.2009, 22:42
Hat hier jemand eine Idee. (ohne wget)

Du versuchst eine Datei direkt mit Parametern aufzurufen => klappt sicher nicht, bzw, musst du das Script speziell drauf vorbereiten...

Schau dir mal das $argc-Array (http://www.php.net/manual/de/reserved.variables.argc.php) an:wink:

Andererseits kannst du dir Crons so umbauen, dass sie sich direkt aufrufen lassen, dann müsstest du aber auch das Passwort überall prüfen lassen usw. usf.

Lokutos
06.06.2009, 22:53
1. crondatei öffnen

ganz oben folgendes einfügen:


<?
@set_time_limit(0);
@ignore_user_abort(true);

require ( '/...Deinabsoluterpfad..../lib/functions.lib.php' );
db_connect ();
dein absoluter pfad ist zu ersetzten.
findest du raus indem du eine Datei im lib Ordner hoch lädst mit dem inhalt
<?php phpinfo(); ?>
und aufrufst,
den setzt du dan ein.

dann gehst du hin und gibst der datei die rechte 700 (so kann sie nur der Server aufrufen)

danach kannst du sie wie du möchtest im crontag aufrufen.
(seite.de/crons/cronnahme.php)

mfg Lokutos

Hardy
06.06.2009, 22:53
Die fehlermeldung sagt aus das er die cron.php nicht öffnen kann (die sich ja standartmäßig im root verzeichniss befinden sollte) vermutlich weil diese nicht vorhanden ist...

webkle
06.06.2009, 23:36
Bei VMS 1.2.3 habe ich das jetzt wie folgt probiert:

cd /var/www/webxx/html/losexxxx/ && /usr/bin/php /var/www/webxx/html/losexxxx/cron.php?id=1&pw=geheim > /dev/null

Versuch mal:

cd /var/www/webxx/html/losexxxx/ && /usr/bin/php /var/www/webxx/html/losexxxx/crons/cron.php?id=1&pw=geheim > /dev/null

Hast das Verzeichnis "crons" nicht angeben!

mfg webkle

Lokutos
07.06.2009, 11:05
sein hoster wird zu 90% crontab benutzen und da passt die anleitung von mir oben.
da crontab keine variablen im sinnde von ?x= übergeben kann.



MFg Lokutos

Zockervogel
07.06.2009, 22:56
ganz oben folgendes einfügen:

[php]<?
@set_time_limit(0);
@ignore_user_abort(true);

require ( '/...Deinabsoluterpfad..../lib/functions.lib.php' );
db_connect ();



klappt super !
allerdings muss am Ende der Crondatei noch

db_close();

vor dem "?>" eingegeben werden !!!

Danke für die Hilfe !!!

Hardy
07.06.2009, 22:59
na dann viel spaß wenn die user ab und zu mal die crons ausführen...verstehe nicht warum du nicht die cron.php aus dem vms 1.2 hochlädst dann gehen auch deine 1.2 crons :frusty:

Lokutos
07.06.2009, 23:02
ich denk mal er hat crontab und bei crontab müsste man dan die cron.php umschreiben ich hab z.b. auch meine wichtigen crons über den crontab gemacht und da geht nunmal das 'x= nicht.

die cron.php denk ich hat er schon oben.

ps man muss nicht immer den eigenen kopf benutzen:
http://www.nordic-dogs.de/images/smilies/mauer.gif



MFg Lokutos

jpwfour
08.06.2009, 12:34
ich denk mal er hat crontab und bei crontab müsste man dan die cron.php umschreiben ich hab z.b. auch meine wichtigen crons über den crontab gemacht und da geht nunmal das 'x= nicht.
...

Falsch?

a) man koennte ja wget, curl etc. benutzen, dann geht das ohne Probleme, aber will er ja nicht (aus welchen diffusen Gruenden auch immer)

b) eine andere Methode hatte Sebmaster in #2 schon gepostet.

Lokutos
08.06.2009, 15:05
grundsätzlich finde ich es einfacher den anfang schnell mit dem Code zu füllen und am ende n close.
und die rechte neu zu vergeben ist auch sicherer so can der cron nicht aufgerufen werden von extern.

aber das ist Geschmacksache.


MFg Lokutos

Zockervogel
12.06.2009, 01:56
also...
wenn ich wget nutze, dann bekomme ich täglich über 100 Mails wegen der Ausführung. Habe das schon alles getestet :-(

Natürlich habe ich cron.php hochgeladen.... (tzzz)

und ich habe natürlich auch den crons, die ich geändert habe, andere Namen verpasst. (keine 100%ige Sicherheit aber wengistens etwas)

wenn das mit dem wget (ohne Bestätigungsmails) gehen würde, würde ich das natürlich auch lieber nutzen.

habe dafür aber zu wenig Ahnung wie das gehen soll (habe eine Woche probiert und es nicht hinbekommen)

jpwfour
12.06.2009, 16:29
Entweder kannst du das mit den Mails in deiner Serververwaltung (plesk,confixx,webmin,...) einstellen, oder es kommt keine, wenn du wget via dem Parameter -q einstellst, so dass es keinen Output gibt.
oder den Output nach >/dev/null leiten :wink:

Ansonsten, wenn du das manuell machst, einfach im Crontab die MAILTO Direktive auf "nichts" setzen

Zockervogel
17.11.2009, 22:41
sein hoster wird zu 90% crontab benutzen und da passt die anleitung von mir oben.
da crontab keine variablen im sinnde von ?x= übergeben kann.
MFg Lokutos

nun, ich habe das ja immer noch nicht in den Griff bekommen :-(

Mein Hoster nutzt ja crontab. Also wird wohl (wie Du schreibst) ?x= nicht übergeben

meine cron.php habe ich wie Du geschrieben hast mit
require ( '/var/www/webxx/html/losexxxx/lib/functions.lib.php' );
modifiziert.

ich bin mal wieder total hilflos

Lokutos
17.11.2009, 22:48
crons alle lassen wie sie sind

cron.php


<?
@set_time_limit(0);
@ignore_user_abort(true);
@require ( '/home/snippisc/public_html/snippis/lib/functions.lib.php' );

if($_GET['pw']==''){
$passwort=$argv[1];
$cron = $argv[2];
}else{
$passwort=$_GET['pw'];
$cron = (int)$_GET['id'];
}


if ($passwort != $cron_pw) die('Zugriff verweigert!');

db_connect ();

db_query('DELETE FROM vms_reloads WHERE bis <= '.time().'');



$result = mysql_fetch_assoc (db_query ('SELECT datei FROM vms_crons WHERE id = '.$cron.' LIMIT 1'));


if (include ($result['datei'])){
db_query ('UPDATE '.$db_prefix.'_crons SET laufzeit = '.time().' WHERE id = '.$cron.' LIMIT 1') or die(mysql_error());
echo 'Cron gelaufen';
} else echo 'Cron nicht gelaufen';

db_close();
?>


dan ein aufruf wie folgt:

php5 /home/root/public_html/....../cron.php passwort cronid
z.b.
php5 /home/root/public_html/....../cron.php sausicher 5

ist im crontab url_fopen deaktiviert machst du folgendes

du verlinkst auf deine php.ini
php5 -c /home/root/etc/php.ini /home/root/public_html/..../cron.php passwort cronid



MFg Lokutos

Zockervogel
17.11.2009, 23:39
@ Lokutos
danke Dir mal wieder :-)))

funktioniert *freu*

Lokutos
18.11.2009, 19:06
Keine ursache

*dankebutton gedrück haben*

Zockervogel
23.11.2009, 14:57
Das klappt ja jetzt :-)
Da ich kein neues Thema aufmachen will eine Anschlussfrage :-)
Bei der "Unmenge" an Sponsoren braucht es ja auch noch viel mehr Crons :)

Mal "dumm" gefragt:

Gibt es die Möglichkeit einen Cron aufzurufen, der dann nach und nach alle anderen Crons abarbeiten lässt ?

DimpleX
23.11.2009, 17:33
dumme frage und ne dumme antwort JA


dafür sind crons und so da um es autmasiert abzuarbeiten



DimpleX

jpwfour
23.11.2009, 17:38
Jo, dafür am besten in der DB Tabelle ne Spalte "auto" hinzufügen
(refzahlung/anteilsausssschüttung usw. sollen ja nicht stündl. laufen :yes:)
und dann nur 1 Cron/datei einrichten, die alle "auto=1" nacheinander (bezugnehmend auf den zeitpunkt der letzten ausführung) ausführt.

Dabei sollte man es nur nicht übertreiben, sofern man Scriptlaufzeit nicht selber einstellen kann.

Es gibt auch schon fertige "Multi-Crons" etc., nur iwie decken die nie alles ab, was man so wollen würde :biggrin1:

Abgesehen dafür für 5 Zeilen Code Lose ausgeben.....

Zockervogel
23.11.2009, 18:28
@DimpleX nicht hilfreich oder meine Frage falsch verstanden

@jpwfour Multicons... ja, sowas in der Art.

Ich habe hier zwischenzeitlich auch was drüber gefunden. (ist halt immer schwer was zu finden, wenn man nicht weiß wie das heißt..hehehe)

Multi-Cron-Paidmails.
Da sollten dann alle Aufrufe für die Paidmailinterfaces reinkommen. Ist ja auch viel einfacher zu händeln als jeden Cron einzeln einzutragen :-)

DimpleX
23.11.2009, 19:34
haste nicht headset und skype dan kann ma schneller helfen ;)


DimpleX