ホームページ  >  記事  >  バックエンド開発  >  非同期 - PHP バルク データ データ インポート

非同期 - PHP バルク データ データ インポート

WBOY
WBOYオリジナル
2016-08-04 09:21:441399ブラウズ

ここで、Excel データをデータテーブルにインポートする必要がありますが、データの量は比較的多く、一度に最大で数十 W 個のデータをインポートする必要があります。インポートされたデータは、データテーブルに直接書き込まれるわけではありません。 db を使用しますが、インターフェイスは最大 1,000 個のアイテムを処理できるため、インポートするたびにこれを作成したいと考えています。タスクをインポートし、すべてのタスクをキューに入れて、インポート タスクを順番に完了する方法と提案

返信内容:

ここで Excel データをデータテーブルにインポートする必要がありますが、データの量は比較的多く、一度に最大で数十 W 個のデータをインポートする必要があります。インポートされたデータは、データテーブルに直接書き込まれるわけではありません。 db を使用しますが、インターフェイスは最大 1,000 個のアイテムを処理できるため、インポートするたびにこれを作成したいと考えています。タスクをインポートし、すべてのタスクをキューに入れて、インポート タスクを順番に完了する方法と提案

あなたのアイデアはとても良いですが、残念ながら PHP はこの種のことには適していません。あなたのアイデアを実装するには Java などの言語を使用することをお勧めします。

PHP にはタスクがあり、タスクのパラメーターをデータベースに直接送信します。

Java はバックグラウンドで 100ms ごとにデータベースにアクセスしてタスクがあるかどうかを確認し、タスクがある場合は処理します。

php のデフォルトは 30 秒です。set_time_limit(99999999) を追加できます。
数十万のデータが 1 分以内にダンプされるはずです

Crontab + タスク リストはバックグラウンドで非同期タスクを実行します。これはこのシナリオに非常に適しています

  1. mysql ロードデータ infile はデータを一時テーブルに素早くインポートします

  2. PHP デーモンはデータをインターフェースにバッチで同期します (または crontab がスケジュールされたタスクを書き込みます)

phpをSQLに配置し、mysqlのバックグラウンドソースを直接インポートします

一度にすべてをインポートするのではなく、セクションに分けてインポートすることをお勧めします

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。