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

Php ';ftp_get:打开二进制模式数据连接';-发生在批处理中的单个文件上,php,ftp,cron,Php,Ftp,Cron,我有一个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行

我有一个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()相同的文件而不会出错,它不会损坏

有人知道可能导致此问题的其他原因吗?同时执行其他抓取的服务器是否会导致问题


欢迎您提供任何建议或见解。

我认为您可能正在考虑服务器问题。如果您同时运行这样的提要,则可能会出现负载问题


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

我认为您可能正在关注服务器问题。如果您同时运行这样的提要,则可能会出现负载问题


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

我已经对此进行了很多研究,这是我的基本感受。cron组织得很糟糕,所以我会试试这个,如果有帮助的话,谢谢。我已经研究了很多,这就是我的基本感受。cron组织得很糟糕,所以我会试试这个,如果有帮助,请告诉你,谢谢。