Ich gebe Hier kleines Script für euch zu Verfügung!
auch gut für PHP Scripter da mann bei diesen aufbau Einiges raushollen könnte.
naja Wer den script Sich dann genauer anschaut weiß evtl. was für spiele reihen ich meine
Also als erstes.
erstellt ihr In "inc" ordner oder wo ihr euere configs enthalten sind.
namens cron.php Bearbeitet diese und fügt dies hinzu.
PHP Code:
<?
class Cron
{
function Execute()
{
$sqlHp = mysql_connect(SQL_HP_HOST, SQL_HP_USER, SQL_HP_PASS);
$query = mysql_query("SELECT id FROM ".SQL_HP_DB.".site_cron WHERE enabled = '1' ORDER BY prio ASC",$sqlHp);
while ($job = mysql_fetch_assoc($query))
{
if ($this->GetNextExec($job['id']) <= time())
{
$this->RunJob($job['id']);
}
}
}
function RunJob($jobId)
{
$sqlHp = mysql_connect(SQL_HP_HOST, SQL_HP_USER, SQL_HP_PASS);
$script = mysql_result(mysql_query("SELECT scriptfile FROM ".SQL_HP_DB.".site_cron WHERE id = '" . $jobId . "' LIMIT 1",$sqlHp), 0);
if (!$this->CheckScript($script))
{
echo 'Die datei\'' . $script . '\': konnte Nicht gefunden werden bitte Überprüfen Sie die Pfade!.';
return false;
}
require(pfad.$script);
mysql_query<("UPDATE ".SQL_HP_DB.".site_cron SET last_exec = '" . time() . "' WHERE id = '" . $jobId . "' LIMIT 1",$sqlHp);
}
function CheckScript($script)
{
$sqlHp = mysql_connect(SQL_HP_HOST, SQL_HP_USER, SQL_HP_PASS);
if (file_exists(pfad.$script))
{
return true;
}
return false;
}
function GetNextExec($jobId)
{
$sqlHp = mysql_connect(SQL_HP_HOST, SQL_HP_USER, SQL_HP_PASS);
$query = mysql_query("SELECT last_exec,exec_every FROM ".SQL_HP_DB.".site_cron WHERE id = '" . $jobId . "' LIMIT 1",$sqlHp);
if (mysql_num_rows($query) == 1)
{
$data = mysql_fetch_assoc($query);
return $data['last_exec'] + $data['exec_every'];
}
return -1;
}
}
?>
und fügt das hinzu:
PHP Code:
DEFINE('pfad', './php/cron/');
Öffnet navicat.
drückt auf tastatur "F6" und Kopiert dieses dort ein und einmal enter drücken :P
Code:
DROP TABLE IF EXISTS `site_cron`;
CREATE TABLE `site_cron` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`prio` int(11) NOT NULL DEFAULT '5',
`enabled` enum('0','1') NOT NULL DEFAULT '1',
`scriptfile` varchar(50) NOT NULL,
`last_exec` int(11) NOT NULL,
`exec_every` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
Wo die includes sind kopiert ihr dies dazu:
PHP Code:
require("./inc/cron.php");
PHP Code:
if(!is_resource($sqlServ) OR !is_resource($sqlHp)) {
exit("Verbindung zur Datenbank fehlgeschlagen: Abbruch");
}
PHP Code:
$cron = new Cron();
$cron->Execute();
ach ja. es geht nur wenn Jemand auf Die Homepage aufruft.
Und die Thread nun Posten wozu ist es gut?
Ganz Einfach manche Scripts soll nicht jedes mal ausführen Wenn die Seite besucht wird.
z.B. Tombola wenn ein Tagesticket Umsonst sein soll. und nicht unötige datenbank tabellen nötig ist
da soll der Script 1 mal am tag den Script Ausführen und Tagesticket Frei geben.
UND ja geht auch ohne diese Datenbank ausführung. ist aber dann komplizierter da man mehrige tabellen in Account.account benötigt wird. etc.
Datenbank erklährung.
id = ist wohl klar :P darf nicht Gleich sein also 1 und 1 usw . 1,2,3 so ist es richtig.
prio = das ist Priorität der Cron script. also Je höher die zahl somit führt der den script als erstes aus.
enabled = "1" ist sie Aktiv "0" unactiv und wird nicht Ausgeführt.
scriptfile = Conscriptfile also name der php datei!
last_exec = wann der script wieder ausgeführt wird
exey_every = Wv zeit vergehen soll das der script wieder Ausgeführt wird (time) Format^^
Viel spaß damit :P
Sorry wegen miese Rechtschreibung ;( ^^
MFG
Thesone







