我有一个 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() 没有错误的同一个文件,它没有损坏。
有谁知道可能导致此问题的任何其他事情?服务器同时执行其他获取是否会导致问题?
欢迎任何建议或见解。