'ftp_get: การเปิดการเชื่อมต่อข้อมูลโหมด BINARY' - เกิดขึ้นในไฟล์เดียวในชุด

ฉันมีการตั้งค่างาน 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() ไฟล์เดียวกันได้โดยไม่มีข้อผิดพลาดในภายหลัง มันก็ไม่เสียหาย

ไม่มีใครรู้สิ่งอื่นใดที่อาจทำให้เกิดปัญหานี้หรือไม่? เซิร์ฟเวอร์ทำการดึงข้อมูลอื่นๆ ในเวลาเดียวกันอาจทำให้เกิดปัญหาได้หรือไม่

ข้อเสนอแนะหรือข้อมูลเชิงลึกใด ๆ จะได้รับการต้อนรับ


person MLeFevre    schedule 01.11.2012    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่าคุณคงกำลังดูปัญหาเซิร์ฟเวอร์ หากคุณกำลังเรียกใช้ฟีดลักษณะนี้พร้อมกัน อาจเป็นปัญหาในการโหลด

ฉันจะลองตรวจสอบโหลดของเซิร์ฟเวอร์ (โดยใช้ top หรือ htop) ในเวลานั้น และอาจแจกจ่ายกระบวนการอื่น ๆ อีกครั้งเพื่อให้กระบวนการนี้มีพื้นที่หายใจเพิ่มขึ้นอีกเล็กน้อย

person captain_G    schedule 09.11.2012
comment
ฉันได้พิจารณาเรื่องนี้มาบ้างแล้วและนี่คือความรู้สึกที่ซ่อนอยู่ที่ฉันมี cron ได้รับการจัดระเบียบไม่ดี ดังนั้นฉันจะลองทำเช่นนี้และแจ้งให้คุณทราบว่าจะช่วยได้หรือไม่ ขอบคุณ - person MLeFevre; 09.11.2012