【发布时间】:2012-12-11 09:26:10
【问题描述】:
我最近遇到了一个问题,在我的应用程序的高流量期间,使用 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 服务器只有一个零字节文件,是否有任何原因?这是否表明传输问题,可能是由于每年这个时候的高流量造成的?
【问题讨论】:
-
听起来像一个真正的熊去解决问题。考虑在
curl_exec调用前后添加日志点?您是否安装了FTP extension?使用起来更烦人,但你也许可以从中哄出更好的错误。 -
是的,排除故障是一个尴尬的问题,因为它不是在每个文件上都发生,甚至不是那么频繁。这就像 500 个文件中的 1 个,甚至更多。