PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Script] Cronjobs Serverseitig ausführen (bei Hosting mit Cronjobs)



Benutzer1699
01.07.2008, 17:38
Wer bei seinem Webhosting-Paket Cronjobs beim Anbieter dazu bekommt
kann nach diesem Tutorial cronjob.de und andere Risikoquellen beim Betrieb ausschließen.

Vorteile:
- Cron läuft zur richtigen Zeit (korekte Serveruhr vorrausgesetzt)
- Kein Zugriff von extern möglich
- Zeitlimit greift i.d.R. nicht
- Weniger Traffic =)

Wer manuell keinen Aufruf der Cronjobs mehr benötigt, kann seinen Cronjob-Ordner mit einer .htaccess - Datei von außen unzugänglich machen:



DENY FROM ALL


Folgende Datei anlegen:
cronjob_cli.php


<?php
/**
* @author Christoph Zysik ( ztk@ztk-hosting.de )
* @version 0.2
*/
if('cli' === php_sapi_name()){

/** Hier den kompletten Server-Pfad zum VMS-Script angeben: */
$serverpfad = '/pfad/zur/domain.de/htdocs';


require ( $serverpfad.'/lib/functions.lib.php');
$cron = $_SERVER["argv"][1];

db_connect ();
db_query('DELETE FROM '.$db_prefix.'_reloads WHERE bis <= '.time().'');
$sql = db_query ('SELECT datei FROM '.$db_prefix.'_crons WHERE id = '.$cron.' LIMIT 1') or die(mysql_error());
$result = mysql_fetch_assoc ($sql);
chdir($serverpfad);
if ( include ($serverpfad.'/'.$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(); }
?>


Der Eintrag in den Crontab wie folgt vornehmen:



1 2 3 4 5 php /pfad/zum/script/cronjob_cli.php 6


1-5 = Wann soll das Script laufen.
6 = ID des Crons, siehe Adminforce.


Fragen & Anregungen gerne an mich oder hier diskutieren.

Hardy
01.07.2008, 20:21
Werde das bei gelegenheit mal ausprobieren.

Auf jedenfall schon mal ne feine sache!:thumb: