• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

php Datei im Web per Termin starten ?

scup

Well-Known Member
Themenstarter #1
Hallo zusammen,

da mein FreeBSD Rechner eh permanent am WWW hängt, würde ich gerne per Cron oder so, eine bestimmte php Datei aufrufen, die dann wiederum ein Backup meiner DB macht, diese packt, und dann per FTP an meinen Rechner sendet. Die php Datei funktionuckelt ja schon einwandfrei, jetzt brauche ich halt nur noch eine Art cronjob, der eben diese Datei im Web aufruft. Ich sehen sehr wahrscheinlich den Wald vor lauter Bäumen nicht, deswegen bin ich für jeden Tip dankbar.

Ich habe schon eine Verknüpfung mit dieser URL auf dem Desktop angelegt, die bei klick den Prozess startet............aber wie kann ich das automatisieren ? KCron unter KDE 3.3 habe ich schon versucht.............ohne Erfolg.
 

unlink

Well-Known Member
#3
Wenn du php in der CGI-Version zur Verfügung hast, sollte es über /usr/local/bin/php $SCRIPT möglich sein.
Ansonsten solte auch etwas wie /usr/local/bin/w3m -dump $URL möglich sein oder du schreibst dir ein
Skript/Pogramm was das für dich erledigt.

Dafür wäre jedoch IMHO ein Shell-/Perlskript besser geeignet.
 

dettus

Bicycle User
#4
bist du auf der kiste, von der aus du die php-datei aufrufen moechtest root?
falls ja, gar kein problem.... dann schreibst du in /var/cron/tabs/root einfach eine zeile
Code:
42 23 * * * * wget -O/dev/null [url]http://deine.url/dein.skript.php[/url]
mit rein, und gut ist. (natuerlich solltest du wget vorher ueber die ports installiert haben)
 

dettus

Bicycle User
#5
ODER, wenn du es bash-shellskriptig magst:

Code:
while (true) ; do wget -O/dev/null -c [url]http://bla.fasel/troet.php[/url] ; sleep 86400 ; done
86400 ist dabei ein ganzer tag in sekunden.
 

scup

Well-Known Member
Themenstarter #6
Hallo zusammen,

super, vielen Dank für Eure Mithilfe. Ich habe zwar die Möglichkeit cronjobs anzulegen, allerdings ohne die Möglichkeit Variablen auf dem Server von all-ink beim starten mizugeben. Also ein wget Aufruf ist nicht drin.

Ich kann dort lediglich eine URL im Stil von www.meine-domain/url/zum/script.php

angeben. Weitere vorliegende Variablen werden automatisch rausgelöscht :ugly:

Das funktioniert also so nicht.

Ich habe auch keinen root Zugriff auf den besagten Rechner............ist halt ein Web XXL Paket.

Jetzt habe ich halt hier unterm Tisch noch nen Minni Server mit FreeBSD eingerichtet, der hauptsächlich zum testen von PHP, Perl und weiteren Scripten, sowie als FileServer dient. Da der sowieso permanent am Netz hängt, dachte ich man könnte mit nem kleinen Trick die php Datei von diesem MinniServer aufrufen lassen :rolleyes: und somit trotzdem eine automatisierung erreichen.....das muss ja irgendwie gehen :cool:

@dettus
Funktionuckelt der letze Befehl auch, wenn ich das so von meinem Rechner aus aufrufe ?

OK.........blöde Frage gewesen, geht also......vielen Dank schon mal...........wenn ich jetzt einen Usernamen und ein Passwort übermitteln muss, um mich zu authentifizieren........wie muss dann der Befehl lauten ?

Noch ein Problem..........Das Script wird zwar aufgerufen, aber die Sicherung funktioniert wohl nur, wenn es in einem Browserfenster aufgerufen wird :eek:
 
Zuletzt bearbeitet:

dettus

Bicycle User
#7
wget ist ein tool, welches per http oder ftp irgendwelche dateien runterlaedt. wenn du so moechtest, ein browser ohne rendering engine. das -O/dev/null sorgt dafuer, dass er keine ausgabedatei erzeugt. moechtest du informationen darueber haben, was dein skript gesagt hat, dann laesst du den parameter einfach weg.

ich empfehle dir die manpage zu wget anzuschauen.
 

scup

Well-Known Member
Themenstarter #9
Hallo nochmal,

also man wget und auch man fetch bringt mir in dem Falle nichts, weil ich mit dieser vorgenannten PHP Datei eine ca. 80 MB große MySQL Datenbank sichern möchte. DIe PHP Datei die dann normalerweise im Browser aufgerufen wird, bekommt nach kürzester Zeit einen Timeout, wenn sie per cron und wget aufgerufen wird. Dieses Script holt sich bei normalem Aufruf im Browser die DB Daten Häppchenweise, reloaded sich also automatisch, packt die sql Datei wieder zusammen, packt das ganze mit gzip und sendet es dann per FTP automatisch zu meinem Minni FTP Server unterm Tisch.

Der wget Aufruf dagegen bringt nur ne Datei von ein paar Kilobyte zustande.........

Ich hoffe, ich konnte die Problematik ein wenig besser umschreiben.

Ich habe mir da folgendes überlegt, um dieses reloaden zu gewährleisten, das der Browser mit voreingestellter URL und Übergabe des Usernamen sowie Passwort per cron an bestimmten Tagen aufgerufen wird, und nach sagen wir mal einer Stunde automatisch wieder geschlossen wird. Länger als diese Zeitspanne braucht das Script in aller Regel nicht, um die Datensicherung plus FTP übertragung durchzuführen.

Für einige wird die Prozedre sicher extrem umständlich ausschauen, aber mir fällt nix besseres ein. Es gibt zwar auch ein perl Script, das ich per cron aufrufen kann, und das dass selbe erledigen könnte.............wenn es denn bei all-ink laufen würde. Auch da kommt dann nur ne Minni Sicherung raus, die nur für die Tonne geeignet ist.

Hab mich zwar jetzt hier als mega DAU geoutet, aber egal...........bücken, und das lächeln nicht vergessen :D
 
#10
Hi, du könntest ja die Timeoutzeit von fetch oder wget erhöhen. ich kann die leider nicht sagen ob und wie das geht.

Ansonsten würde, wie schon oben gesagt ja sicher auch ein
"lynx -dump -timeout=XXX www.meine-domain/url/zum/script.php"

(XXX in Sekunden) per cron aufruf gehen oder?
 

co|cipher

cobalt lover
#11
Hmm wie wär es wenn du dein Script nur die DB dumpen und packen läßt und 1 Stunde (bzw. je nachdem wie lange es dauern sollte bis der kram erledigt ist) auf deinem Heimrechner per cron nen script laufen läßt daß sich die Datei per FTP vom Webserver krallt. NcFTP eignet sich ideal für sowas. Obwohl wget frisst ja auch mittlerweile FTP downloads.
 

scup

Well-Known Member
Themenstarter #12
Hallo zusammen,

@co|cipher
Ich habe mir also flux ncftp über die ports installiert, und nach einigem rumgewürge bekam ich auch ein passables Ergebnis hin.

Die Konfigurationsdatei für den Start von .netrc sieht nun so aus:

Code:
#set debug 1
#set pager "less -EMi"
#set auto-binary 1
#unset startup-msg
machine meine.domain.de
user username
password passwort
macdef init
cd /backup
ls -lt
binary
lcd ccc
get dump*
ein erweitern um den Parameter -DD zum löschen der Datei auf dem Webserver scheitert bisher noch. Allerdings bringt der Cronaufruf

/usr/local/bin/ncftp1 cologne

den erforderlichen Erfolg :) um die Datei runterzuladen.

Nun habe ich mich an lynx rangewagt, es auch eben installiert um mich direkt danach ins Parametergewühl zu stürzen :D

Der folgende Aufruf an der Konsole war dann auch erstmal von Erfolg gekrönt:

/usr/local/bin/lynx -auth=username:passwort http://www.meine-domain.de/backup/backup.php

Es wurde wahrhaftig ein kompletter Dump angelegt :D

Leider kam dann beim Aufruf per cron folgende Fehlermeldung, mit der ich immer noch kämpfe :eek:

Code:
 Your Terminal type is unknown!

  Enter a terminal type: [vt100] 
TERMINAL TYPE IS SET TO vt100
[?7h[?1h=Getting [url]http://www.meine-domain.de/backup/backup.php[/url][m
Looking up [url]www.meine-domain.de[/url][m

[?1l>
Den Domainnamen habe ich rausgenommen !

Einer ne Idee ? Wenn das auch noch hinhaut, das ich das erstellte File nach dem download aus dem Netz auch dort gelöscht bekomme, und desweiteren das Problem mit lynx gefixt wird, dann wäre es für mich perfekt :cool: