Saya menggunakan API yang memiliki batas permintaan dalam satu jam. Tetapi skrip saya melakukan semuanya sekaligus sehingga saya kehilangan sekitar 1/3 permintaan karena saya mendapatkan 403.
Apakah ada cara untuk memeriksa respons wget dan jika saya mendapatkan 403 untuk menunggu 5 menit dan coba lagi?
Dan ini kode pengujian saya (untuk saat ini):
system ("wget \"http://test-link.com/403/\" -O {$dir}/{$in_dir_counter}.xml");
$test = system ("wget \"http://test-link.com/403/\" -O {$dir}/{$in_dir_counter}.xml");
echo "responsed - ".$test;
keduanya kembali sama.
php
wget
web-crawler
pengguna270181
sumber
sumber
Jawaban:
Bagaimana kalau menggunakan skrip sederhana untuk itu:
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):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:
cache_duration
untuk menghemat waktu di mana Anda akan mendapatkan semua file, seperti 24 jam (24 * 60 * 60
).Gagasan skrip alternatif:
sumber