ฉันมีการตั้งค่างาน cron ที่ใช้สคริปต์เพื่อดาวน์โหลดไฟล์จำนวนมากจาก FTP ไปยังเซิร์ฟเวอร์ภายในเครื่องในเวลาที่กำหนด มันทำงานได้ดีอย่างแน่นอนเมื่อฉันเรียกใช้สคริปต์ด้วยตนเอง มันยังทำงานได้ดีอย่างสมบูรณ์ 9 จาก 10 ครั้งผ่านทาง cron อย่างไรก็ตาม บางครั้งไฟล์ 1 ไฟล์ที่ถูกตั้งค่าให้รับล้มเหลว และเกิดข้อผิดพลาดที่คล้ายกันนี้:
ftp_get(): Opening BINARY mode data connection for Media_4.zip (421623342 bytes). in /home/crons/feeds/get_files.php on line 102
บรรทัด 102 คือ ftp_get() ฉันรู้ว่าไม่มีอะไรผิดปกติเนื่องจากทำงานได้ดีเมื่อทำงานด้วยตนเอง/พยายามอัตโนมัติอื่น ๆ แต่เพื่อความชัดเจนทั้งหมด:
foreach ($download_files as $download_file)
{
$local_file = "{$path}/files/{$download_file}";
$download = ftp_get($conn_id, $local_file, $download_file, FTP_BINARY);
if (!$download)
{
ftp_dl_log($queue_number, "FTP download has failed for $source_name: $download_file", "warn");
}
else
{
ftp_dl_log($queue_number, "Downloaded file successfully");
}
}
ฉันสงสัยว่ามันไม่เกี่ยวอะไรกับขนาดไฟล์ การอนุญาต หรืออะไรทำนองนั้น โดยรวมแล้วมีประมาณ 2GB กระจายไปยังหลายไฟล์ในการดาวน์โหลดทั้งหมด บางครั้งดูเหมือนว่าจะล้มเหลวในไฟล์ใดไฟล์หนึ่ง ไฟล์อื่น ๆ ทั้งหมดจะถูกดึงข้อมูลโดยไม่มี ปัญหาดังนั้นฉันจึงค่อนข้างสับสน ตัวอย่างของไฟล์ทั้งหมดจะเป็น:
Media_1.zip (600mb, downloads fine)
Media_2.zip (200mb, downloads fine)
Media_3.zip (700mb, downloads fine)
Media_4.zip (400mb, downloads fails)
Media_5.zip (300mb, downloads fine)
Media_6.zip (250mb, downloads fine)
Media_summary.csv (2mb, downloads fine)
การจำกัดขนาดไม่ใช่ปัญหา และไม่มีการหมดเวลาด้วย
ไฟล์ที่ฉันใช้เป็นตัวอย่างถูกอัปโหลดไปยัง ftp @
Oct 31 17:27
และ ftp_get() สำหรับไฟล์เกิดขึ้น @
Nov 01 03:14
ดังนั้นจึงไม่อาจเป็นไปได้ว่าไฟล์จะไม่สมบูรณ์ในขณะที่ร้องขอ และการพิจารณาว่าฉันสามารถ ftp_get() ไฟล์เดียวกันได้โดยไม่มีข้อผิดพลาดในภายหลัง มันก็ไม่เสียหาย
ไม่มีใครรู้สิ่งอื่นใดที่อาจทำให้เกิดปัญหานี้หรือไม่? เซิร์ฟเวอร์ทำการดึงข้อมูลอื่นๆ ในเวลาเดียวกันอาจทำให้เกิดปัญหาได้หรือไม่
ข้อเสนอแนะหรือข้อมูลเชิงลึกใด ๆ จะได้รับการต้อนรับ