2017-04-19 14 views
1

私は50万レコードのExcelシートを持っています。シートには、電話番号を持つ2つの列と番号所有者の他の名前があります。laravelで500,000レコードのExcelシートを読む

数字を読んで、大量のSMSを送信するWebサービスに送信します。私は、ワークシートを処理するためにlaravelキューを使用したい。

複数のワーカーを使用していて、ワーカーがすでに他のワーカーが読み込んだ行を再読み込みしないようにするには、ファイルをより高速に読み取ってその内容をデータベースに挿入できますか?

答えて

2

laravel-excelパッケージにはこの機能があります(「キューチャンク」を参照)。 source codeを見ると

は私の提案を確認し、chunk方法は、ファイルの各ジョブ処理部N(チャンクサイズで割った行数)ジョブ要求を作成します。 eqを設定するだけです。 Redisキュードライバを開き、php artisan queue:workコマンドを使用して一部のワーカーを起動します。

(実装上の下に隠れている)手動溶液:

  1. 、全体の内容を読み出すことなく、ファイル内の行数を取得する分割行チャンクサイズで割っN部(行の数に)、
  2. 各パートに対して、ジョブ要求を作成します(このジョブによって処理される最初と最後の行番号を渡す必要があります)。各ジョブは、ファイルを開き、指定された開始行に移動し、指定された行数を読み取る必要があります。
  3. 一部のワーカーを起動します。
関連する問題