我有一个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()同一个文件而不会出现错误。有没有人知道可能导致此问题的任何其他事情?服务器是否同时执行其他提取会导致问题?
欢迎任何建议或见解。
答案 0 :(得分:1)
我认为您可能正在查看服务器问题。如果您同时运行此类Feed,则可能是加载问题。
我会尝试在那时监控服务器负载(使用top或htop),并可能重新分配其他一些进程,以便为这个进程提供更多的喘息空间。