mehrmaliges ausführen verhindern,...

JesusFreak777

Erfahrenes Mitglied
hallo,

ich habe ein Skript das mir einen Cronjob ausführt,... dummerweiße hat mein serveranbieter irgendein Problem, und da kommt es vor das der cronjob 2 oder gar dreimal ausgeführt wird,... der Cronjob versendet sms an mehrere User,... für mich ist das eine Kostenspielige sache,...

jetzt wollte ich fragen ob es die möglichkeit gibt das script so zu beschränken das ich es z.B. nur alle 5 minuten ausführen kann,...

das auszuführende script sieht so aus,...

PHP:
<?php

define('CRONJOB', 1);

define('ROOT_PATH', dirname(__FILE__));
define('LIBRARY_PATH', ROOT_PATH.'/library');
define('CRONJOB_PATH', ROOT_PATH.'/cronjobs');

session_start();


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

include_once(LIBRARY_PATH.'/loader.php');

$cronjob = Singleton::getInstance('Cronjob');

//register report email address
$cronjob->registerEmail('mail@domain.com');

//register cronjobs 
$cronjob->registerCronjob('SMS');


//use a param to load different jobs
#$job = $_GET['job']; //Email
//example
#$cronjob->registerCronjob($job);
//read cronjob manual for params

$cronjob->execute();

?>


Danke für eure hilfe,...
 
Zuletzt bearbeitet:
Du könntest time() in eine Session schreiben. Dann prüfst du ob es ein Session-Element mit dem Namen schon gibt ( z.B. $_SESSION['time'] ) und ob $_SESSION['time'] ungleich time() ist. Wenn ja, dann wurde das Script schon aufgeführt.
Nun, die Feinarbeit überlasse ich dir, ist nur ein Vorschlag :)
 
hm, ok

aba wie kann ich das ganze machen das es in 5 minuten wieder funktioniert,...
oder ich tscheggs einfach net,...

kann man mit da ein tutorial geben? oder was womit ichs auch kapier,...

Dange
 
Dann prüfst du einfach ob seid $_SESSION['time'] 5 Minuten vergangen sind. Wenn ja, Code ausführen und $_SESSION['time'] mit dem aktuellen time() füllen.
 
Du brauchst nur die Zeit abstände prüfen und dementsprechen dann handeln
time gibt alles in sekunden an. Bei 5min weren es dann 60*5 .
Wenn also Aktuelle time dann größer ist als alte time + 60*5 dann sind die 5 min schon um und du kanst es wieder zulassen.

Mfg Splasch
 
Zurück