1

ユーザーがサーバーにアップロードした CSV ファイルから自分の顧客/マーケティング データベースをシステムにインポートできるようにする機能に取り組んでいます。Amazon RDS の MySQL に支えられた Amazon EC2 の Ubuntu 10.04 で PHP を使用しています。

現在取得しているのは、LOAD DATA LOCAL INFILE を使用するスクリプトですが、やや遅く、実際のユーザーが 100,000 行以上の CSV ファイルをアップロードし始めると非常に遅くなります。

アプリケーションをサポートするためにバックグラウンドでいくつかのタスクを実行する自動化サーバーがあるので、これはそのサーバー (またはサーバーのグループ) に引き渡されるものでしょうか? したがって、ユーザーは CSV ファイルをアップロードし、それを S3 バケットに貼り付けて、そのファイルを特定のユーザーにリンクするデータベースのどこかに行をドロップするか、SQS などを使用して自動化サーバーにそれをインポートするように知らせます。次に、レコードがインポートされ、次の数分/時間にわたって徐々に表示されることをユーザーに伝えますか?

他の誰かがこれを経験したことがありますか?私の論理は正しいのでしょうか、それともまったく別の方向に目を向けるべきでしょうか?

前もって感謝します。

4

1 に答える 1

1

私の会社は、cron を介して、まさにそれを行っています。

ユーザーが CSV をアップロードできるようにします。CSV はディレクトリに送信されて待機します。5 分ごとに実行される cron は、アップロード時に作成されたデータベース エントリをチェックします。このエントリには、ユーザー、ファイル、日付/時刻などが記録されています。解析されていないファイルが DB で見つかった場合は、データベースに基づいてファイルにアクセスします。ファイル名を確認し、データが有効であることを確認し、USPS アドレス検証を実行して、最終的にメイン ユーザー データベースに格納します。

同様に、メールの大規模なバッチを送信する機能、ユーザーの断面のモデル抽象化などを設定する機能があります。全体として、非常にうまく機能します。3 台のサーバーで数百万のレコードを適切に処理でき、インポートごとに数万のレコードが読み込まれます。

于 2012-06-01T20:38:13.080 に答える