CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |

02.11.2004, 11:00:03
|
Anfänger
|
|
Registriert seit: Nov 2004
Beiträge: 1
|
|
PHP Script per Cronjob
Hi Leute,
was genau brauche ich, um ein PHP-Script per Cronjob ausführen zu lassen ?
Ich habe:
einen Rootserver
Confixx 3.0
Shell-Zugriff als Root
Ich habs schon ein paar mal über crontab von der shell aus probiert aber scheinbar klappt das mit PHP Dateien nicht. Ich möchte einfach nur einmal nachts ein Backup-Script für meine SQL-Datenbank laufen lassen.
Wäre nett wenn jemand helfen könnte.
Danke
Stefan
|

02.11.2004, 11:16:35
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 55
Beiträge: 4.748
|
|
Keine Ahnung, ob das so üblich ist, aber eine Idee wäre wget zu nutzen:
--> http://www.gnu.org/software/wget/wget.html
Den Aufbau der crontab übernimmt Dir sicherlich Confixx.
|

02.11.2004, 13:16:08
|
Moderator
|
|
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 47
Beiträge: 484
|
|
In der crontab folgenden Eintrag vornehmen (in meinem Beispiel wird diese Datei minütlich ausgeführt):
Code:
* * * * * root /root/<datei>.sh >/dev/null 2>&1
Unter root die /root/<datei>.sh anlegen mit folgendem Inhalt:
Code:
#!/bin/sh
wget <pfad zur php Datei>/index.php
rm index.php*
|

02.11.2004, 13:24:29
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 55
Beiträge: 4.748
|
|
Freut mich, dass meine Theorie bestätigt wurde...
Aber warum das: rm index.php*??
|

02.11.2004, 13:45:19
|
Moderator
|
|
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 47
Beiträge: 484
|
|
ruf mal per wget eine .php oder .html Datei auf.
wget erstellt eine Ausgabe Datei mit dem selben Namen bzw. benennt vorhandene um. So müllst du dir ganz schnell die Platte zu.
|

02.11.2004, 13:48:48
|
Moderator
|
|
Registriert seit: Jan 2002
Ort: CologneCity
Alter: 47
Beiträge: 484
|
|
ups!!
kleiner Fehler:
Code:
#!/bin/sh
wget localhost/<pfad zur php Datei>/index.php
rm index.php*
|

02.11.2004, 13:52:26
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 55
Beiträge: 4.748
|
|
Zitat:
Original geschrieben von Matthias
ruf mal per wget eine .php oder .html Datei auf.
wget erstellt eine Ausgabe Datei mit dem selben Namen bzw. benennt vorhandene um. So müllst du dir ganz schnell die Platte zu.
|
Ahso. Kenne wget nur vom Hörensagen. Aber jetzt weiß ich's ja. :)
|

03.11.2004, 06:10:30
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
Re: PHP Script per Cronjob
Zitat:
Original geschrieben von stefan2k1
was genau brauche ich, um ein PHP-Script per Cronjob ausführen zu lassen?
|
Neben dem Root Zugriff wäre noch einen PHP Version ab 4.3.x angeraten.
Für ein spezielles DB Backup verwende ich folgendes CLI Shellscript
PHP-Code:
#!/usr/bin/php -q
<?php
define ('_DBTYPE', 'mysql');
define ('_DBHOST', 'localhost');
define ('_DBUSER', 'root');
define ('_DBPASS', 'geheim');
define ('_DBNAME', 'forum1');
define ('CHOWN', 'web0:web0');
define ('BACKUP', '/srv/www/htdocs/web0/backup/forum1/');
@mkdir (BACKUP);
#define ('_DEST', '%s %s > ' . BACKUP . date('Y-m-d'). '.%s.%s.sql');
#define ('_DEST1', '%s %s > ' . BACKUP . '%s.sql');
define ('_DEST1', '%s %s > ' . BACKUP . date('d') . '.data.%s.sql');
define ('_DEST2', '%s %s > ' . BACKUP . 'create.%s.sql');
define ('_CMD1', sprintf('/usr/bin/mysqldump -Q -u%s -p%s -c -t --add-locks --quick --lock-tables ', _DBUSER, _DBPASS));
define ('_CMD2', sprintf('/usr/bin/mysqldump -Q -u%s -p%s -d --add-locks --quick --lock-tables ', _DBUSER, _DBPASS));
#define ('_CMD', sprintf('/usr/bin/mysqldump -Q -u%s -p%s --all --opt ', _DBUSER, _DBPASS));
define ('NL', "n");
define ('_DSN', _DBTYPE.'://'._DBUSER.':'._DBPASS.'@'._DBHOST.'/'._DBNAME);
set_include_path ('.:/usr/lib/php');
require_once('DB.php');
function dbError($msg)
{
die(sprintf ('%s%s',$msg->getDebugInfo(),"n"));
}
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'dbError');
$db = DB::connect(_DSN);
if (DB::isError($db)) die ($db->getMessage());
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$data = $db->getAll('SHOW TABLES');
$n = count($data);
for ($i=0; $i<$n; $i++)
{
$tab = $data[$i]['Tables_in_' . _DBNAME];
if (empty($tab)) continue;
shell_exec(_CMD1 . sprintf(_DEST1, _DBNAME, $tab, $tab));
shell_exec(_CMD2 . sprintf(_DEST2, _DBNAME, $tab, $tab));
}
shell_exec(sprintf('/bin/chown -R %s %s*', CHOWN, BACKUP));
?>
In /etc/crontab steht.
Code:
-0 2 * * * root /srv/www/htdocs/web0/backup.php > /dev/null 2>&1
Das Script ist ausführbar, gehört dem Root und ist nur vom Root les- und beschreibbar. Es erstellt täglich von der DB forum1 je Tabelle einmal das CREATE TABLE und mit dem Tag des Monats im Namen ergänzt ein File mit den INSERT INTO Zeilen. Letzteres ist zusätzliche Sicherheit, damit man notfalls noch ein älteres Backup zur Verfügung hat.
Die Trennung in Tabellendefinition und Daten hat bei einer eventuell nötigen Neuinstallation oder Update der Software Vorteile.
|

22.11.2004, 10:44:16
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 55
Beiträge: 4.748
|
|
FYI: Da ich keinen Bock auf rm export_data_automatically.php.* habe, dachte ich mir, nutzt man doch einfach den Parameter --spider Und siehe da, es gibt keine Dateiausgabe mehr! Der Rest landet in /dev/null, da ich --quiet nichht vertrauen will...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:10:42 Uhr.
|