1

スクリプトを使用して、設定された時間にFTPからローカルサーバーに多くのファイルをダウンロードするcronジョブセットアップがあります。スクリプトを手動で実行すると、完全に正常に動作します。cronを介して10回のうち9回も完全に正常に動作します。ただし、取得するように設定されているファイルの1つが失敗することがあり、これと同様のエラーがスローされます。

ftp_get(): Opening BINARY mode data connection for Media_4.zip (421623342 bytes). in /home/crons/feeds/get_files.php on line 102

102行目はftp_get()です。手動/その他の自動試行で正常に動作するため、問題はありませんが、完全に明確にするために、次のようにします。

foreach ($download_files as $download_file)
{
  $local_file = "{$path}/files/{$download_file}";
  $download = ftp_get($conn_id, $local_file, $download_file, FTP_BINARY);
  if (!$download) 
  {
    ftp_dl_log($queue_number, "FTP download has failed for $source_name: $download_file", "warn");
  } 
  else 
  {
    ftp_dl_log($queue_number, "Downloaded file successfully");
  }
}

ファイルサイズや権限などとは関係がないのではないかと思います。合計でダウンロードされたファイルの数が2GBまであり、ファイルの1つで失敗したように見えることがあります。他のすべてのファイルは、問題があるので、私はかなり混乱しています。すべてのファイルの例は次のとおりです。

Media_1.zip (600mb, downloads fine)
Media_2.zip (200mb, downloads fine)
Media_3.zip (700mb, downloads fine)
Media_4.zip (400mb, downloads fails)
Media_5.zip (300mb, downloads fine)
Media_6.zip (250mb, downloads fine)
Media_summary.csv (2mb, downloads fine)

サイズ制限は問題ではなく、タイムアウトも発生しません。

例として使用したファイルは、ftp@にアップロードされました。

Oct 31 17:27

そして、ファイルのftp_get()は@で発生しました

Nov 01 03:14

そのため、リクエスト時にファイルが不完全であった可能性はありません。そして、後でエラーなしで同じファイルをftp_get()できることを考えると、破損していません。

この問題を引き起こしている可能性のある他のことを誰かが知っていますか?サーバーが他のフェッチを同時に実行すると、問題が発生する可能性がありますか?

任意の提案や洞察を歓迎します。

4

1 に答える 1

1

あなたはおそらくサーバーの問題を見ていると思います。このようなフィードを同時に実行している場合は、負荷の問題である可能性があります。

その時点で(topまたはhtopを使用して)サーバーの負荷を監視し、おそらく他のプロセスを再分散して、このプロセスにもう少し余裕を持たせようとします。

于 2012-11-09T09:33:50.397 に答える