1

我有一个 cron 作业设置,它使用脚本在设定的时间将许多文件从 FTP 下载到本地服务器。当我手动运行脚本时它工作得非常好,它甚至通过 cron 10 次中有 9 次完全正常。但是,有时它设置为获取的文件中的 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() 没有错误的同一个文件,它没有损坏。

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

欢迎任何建议或见解。

4

1 回答 1

1

我认为您可能正在查看服务器问题。如果您同时运行这样的提要,则可能是负载问题。

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

于 2012-11-09T09:33:50.397 回答