Da gibt es viele Möglichkeiten:
1. Schaue nach, ob dein PHP die URL-fopen-Wrapper für HTTP aktiviert hat, die Curl-Erweiterung unterstützt, oder fsockopen()/stream_socket_client() benutzen darf. In der Reihenfolge. Im einfachsten Fall lautet dein Script dann:
PHP-Code:
$entfernte_url ='http://blablabla';
$locale_date = 'file://localhost/pfad/datei.endung';
file_put_contents($lokale_datei, file_get_contents($entfernte_url));
Die beiden Alternativen sind etwas kniffeliger. Das PHP-Handbuch bietet aber ausreichend Beispiele.
2. Du kannst auch ein externes Tool per exec() nutzen oder auf PHP ganz verzichen. Ein bewährtes Downloadtool ist wget. Das lässt sich auch mit einer benutzerdefinierten Konfigurtionsdatei zeitgesteuert (z.B. über den Task-Planer von Windows) aufrufen.
3. Komplett ohne PHP: Mit AutoIt3 kannst du dir ein Script zusammenbasteln, das im Hintergrund wartet, und zur gewünschten Uhrzeit die Datei herunterlädt. Die Funktion InetGet() ist einfach zu bedienen: InetGet($url, $lokale_datei, 1, 0) sollte das Gewünschte erledigen. Die erste 1 sorgt dafür, dass die Datei nicht aus dem Browsercache geholt wird, die zweite dafür, dass InetGet() erst zum Script zurückkehrt, wenn der Download abgeschlossen ist.
Bei der Zeitsteuerung bin ich etwas überfragt, aber es ist möglich ein AutoIt3-Script im "event-driven mode" laufen zu lassen, so dass das Script während der Wartezeit so gut wie keine Systemressourcen verbraucht. Notfalls tuts aber auch einfaches Polling: Das Script fragt bspw. einmal pro Minute nach, ob die gewünschte Uhrzeit schon erreicht ist.
Zitat:
Zitat von hhcm
Mittels CronJob ja.
|
Das setzt voraus, dass auf dem Computer, auf den er die Datei downloaden möchte, ein Betriebssystem läuft, was Cronjobs unterstützt. Da die meisten Menschen wohl ein Windows-OS auf ihren Computer haben, käme eher der Taskplaner in frage.