'ftp_get:打开BINARY模式数据连接' - 在批处理中的单个文件上发生

时间:2012-11-01 15:14:02

标签: php ftp cron

我有一个cron作业设置,它使用脚本在设定的时间从FTP下载许多文件到本地服务器。当我手动运行脚本时,它工作得非常好。它甚至可以通过cron在10次中完全正常工作。但是,有时其中一个文件被设置为失败,并且它会引发类似的错误:

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()同一个文件而不会出现错误。

有没有人知道可能导致此问题的任何其他事情?服务器是否同时执行其他提取会导致问题?

欢迎任何建议或见解。

1 个答案:

答案 0 :(得分:1)

我认为您可能正在查看服务器问题。如果您同时运行此类Feed,则可能是加载问题。

我会尝试在那时监控服务器负载(使用top或htop),并可能重新分配其他一些进程,以便为这个进程提供更多的喘息空间。