最近、アプリケーションへのトラフィックが多いときに、小さなCSVファイルがゼロバイトのcURL/FTPで送信されるという問題が発生しました。ただし、ファイルシステムでファイルを表示すると、ファイルが空ではなく、サイズが0バイトでもないことがわかります。
これは私の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サーバーにゼロバイトのファイルしかないという理由はありますか?これは、おそらくこの時期の大量のトラフィックによって引き起こされた伝送の問題を示していますか?