5

我最近遇到了一个问题,在我的应用程序的高流量期间,使用 cURL/FTP 以零字节发送小型 CSV 文件。但是,当我在我的文件系统上查看文件时,我可以看到它绝对不是空的,而且大小也不是零字节。

这是我的 PHP 代码:

$ch = curl_init();
$fp = fopen($bFile, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://'.FTP_SERVER .'/'.FTP_DIRECTORY.$file_name);
curl_setopt($ch, CURLOPT_USERPWD, FTP_USER.':'.FTP_PASS);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($bFile));
curl_setopt($ch, CURLOPT_FTP_USE_EPSV, false);
curl_exec($ch);

我在 cURL 返回错误的代码中也有一些基本的错误处理:

if ( curl_error($ch) ) {
    throw new Exception("File could not be sent via FTP: " . curl_error($ch));
}

但是,我注意到在这个例子中没有抛出异常并且代码继续执行的情况。

是否有任何理由让我的文件系统上有一个 5Kb CSV 文件,但我将文件发送到的 FTP 服务器只有一个零字节文件?这是否指向传输问题,可能是由每年这个时候的大量流量引起的?

4

1 回答 1

2

既然你在高流量时提到它。您尝试发送的 CSV 文件是否有很多或读/写活动?也许它的 fopen 实际上失败了,因此您发送的是 0 个字节,但文件名正确。那只会产生警告,因此不会被抓住。

也许您应该为使用 curl 发送的不同值添加一些日志记录,例如filesize($bFile)$fp

于 2012-12-11T09:33:21.027 回答