5

最近、アプリケーションへのトラフィックが多いときに、小さな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サーバーにゼロバイトのファイルしかないという理由はありますか?これは、おそらくこの時期の大量のトラフィックによって引き起こされた伝送の問題を示していますか?

4

1 に答える 1

2

あなたは交通量が多いときにそれについて言及しているので。送信しようとしているCSVファイルに多くのまたは読み取り/書き込みアクティビティがある可能性はありますか?おそらく、実際に失敗するfopenであるため、0バイトを送信していますが、ファイル名は正しいです。それは警告を生成するだけなので、捕まることはありません。

おそらく、curlで送信するさまざまな値にログを追加する必要がありますfilesize($bFile)$fp

于 2012-12-11T09:33:21.027 に答える