Php ftp\u无法处理大文件

Php ftp\u无法处理大文件,php,ftp,Php,Ftp,这是我的代码: $con = ftp_connect('ftpserver.com'); ftp_login($con, 'username', 'password'); ftp_pasv($con, true); ftp_set_option($con, FTP_TIMEOUT_SEC, 180); ftp_get($con, './test.txt', '/path/to/file.txt', FTP_ASCII); ftp_close($con); 脚本运行超过几分钟后,我遇到此错误:

这是我的代码:

$con = ftp_connect('ftpserver.com');
ftp_login($con, 'username', 'password');
ftp_pasv($con, true);
ftp_set_option($con, FTP_TIMEOUT_SEC, 180);
ftp_get($con, './test.txt', '/path/to/file.txt', FTP_ASCII);
ftp_close($con);
脚本运行超过几分钟后,我遇到此错误:

PHP警告:ftp_get():打开/path/to/file.txt(6137508字节)的ASCII模式数据连接。在/path/to/script.php中

当它运行时,我可以看到test.txt文件被创建,甚至一些数据显示在其中,但它突然停止下载,大约23135字节。脚本抛出警告后,test.txt将被删除

更新

我想出了一个解决办法

function getFile() {
    $fh = fopen('test.txt', 'a');

    $con = ftp_connect('ftpserver.com');
    ftp_login($con, 'username', 'password');
    ftp_pasv($con, true);
    ftp_set_option($con, FTP_TIMEOUT_SEC, 1);

    if (file_exists('test.txt')) {
        $size  = ftp_size($con, '/path/to/file.txt');
        $size2 = filesize('test.txt');
        @ftp_fget($con, $fh, '/path/to/file.txt', FTP_ASCII, $size2);
        fclose($fh);
        clearstatcache();
        if (filesize('test.txt') !== $size) {
            getFile();
        }
    }
    else
        @ftp_fget($con, $fh, '/path/to/file.txt', FTP_ASCII);

    ftp_close($con);
}

getFile();

你需要增加超时时间。180是秒,也就是3分钟。尝试将其设置为600。即:
FTP\u TIMEOUT\u SEC,600
或更高,具体取决于需要多长时间。您甚至可以尝试
FTP\u TIMEOUT\u SEC,0
,我认为这没有时间限制(不是100%确定),或者干脆将其全部删除。有关更多信息,请参阅。它也可能是php的最大执行时间,您可以通过以下方式进行更改:
ini\u set('max\u execution\u time',0)。PHP的超时已设置为0。将FTP_TIMEOUT_SEC设置为高值也会执行相同的操作。脚本只运行了一段时间,每次删除该文件时,都会立即创建文件大小为23135字节的文件。我尝试使用ftp_fget,文件保持不变,但大小相同。您是在本地计算机上运行,还是在托管站点上运行@VitaliyIsikov Plus,这是您的“实际”代码,包括路径吗?哈哈,不是。实际代码具有正确的凭据和路径。它运行在专用的linux设备上。ftp服务器本身未知,但我可以通过ftp客户端访问并获取文件。