Bagaimana kalau menggunakan skrip sederhana untuk itu:
- Jalankan skrip setiap 5 menit sekali kecuali sudah berjalan.
- Periksa usia file lokal. Jika lebih lama dari ambang tertentu, unduh lagi.
Jadi jika semuanya berjalan lancar, tidak ada yang terjadi, kecuali file sudah usang. Jika file kedaluwarsa dan gagal diunduh, Anda dapat mencoba kembali Iterasi berikutnya.
Saya tidak yakin mengapa Anda menandai ini php
, tetapi jika Anda benar-benar menjalankan skrip php pendekatan ini agak mudah dilakukan (mengingat Anda telah mengaktifkan soket web):
foreach($files as $file)
if (@filemdate($local_path + $file) + $cache_duration < time())
@copy($remote_path + $file, local_path + $file);
Perhatikan bahwa $remote_path
memang bisa berupa HTTP atau URL FTP. Tidak perlu memanggil wget. Ini @
akan mencegah pesan kesalahan dicetak.
Untuk membuktikan bahwa ini tidak akan menyebabkan menunggu yang tidak dibutuhkan:
- Anggap Anda memiliki 1000 file untuk diunduh, tetapi Anda hanya dapat mengunduh hingga 250 file per jam.
- Setel
cache_duration
untuk menghemat waktu di mana Anda akan mendapatkan semua file, seperti 24 jam ( 24 * 60 * 60
).
- Jalankan kembali script di atas sekali setiap jam.
- Iterasi pertama, 250 file pertama akan diperbarui. Yang lain akan gagal.
- Iterasi kedua, 250 file pertama akan dilewati (karena cukup baru) dan 250 file berikutnya akan diunduh.
- Setelah iterasi keempat Anda akan memperbarui / mengunduh semua 1000 file.
- Tentu saja Anda dapat mengatur intervall yang lebih pendek, seperti 5 menit, tetapi ini akan membuat lebih banyak permintaan / lalu lintas (tergantung pada apakah ini dapat diterima).
Gagasan skrip alternatif:
- Coba unduh file.
- Jika gagal, Anda harus dapat menentukan bahwa berdasarkan nilai pengembalian / kode keluar wget. Jadi dalam hal ini tunggu 5 menit, lalu ulangi.