検索

ホームページ  >  に質問  >  本文

mysql - PHPExcelインポート10,000個のデータ接続タイムアウト

初心者は PHP を学んだばかりです。現在、開発では phpexcel を使用してデータベースに 10,000 レコード (43 列の 1 レコード) を挿入する必要があります。存在しない場合は、元のデータの挿入と更新を続行します。フラグを設定しないと、レコードはスキップされます。
現在の状況では、2,000 個のデータをインポートするのに 20 秒以上かかります。10,000 個のデータをインポートすると、アップロードしたファイルが見つからないというエラーが報告されます。が保存されます。 `$result=move_uploaded_file($_FILES'inputExcel',$uploadfile);

リーリー

ここでは行数と列数を取得できません。 Set_time_limit=0 がコードに追加され、メモリが 128M に変更されました。指導を求める

世界只因有你世界只因有你2813日前1051

全員に返信(4)返信します

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:01:12

    メモリがいっぱいになっているはずです。収量反復を使用して、毎回挿入される項目の数を制限できます。実際、これはコルーチンです。

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:01:12

    10,000 個のデータを 1 回インポートするとタイムアウトになりやすく、サーバーに大きな負荷がかかります。この種のビッグ データ インポートは、非同期で完了することができます。ユーザーを待たせないでください。代わりにコルーチンの使用を検討することもできます。

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:01:12

    アップロードされたファイル名をキューに追加します。キューからファイル名を読み取り、インポート用にファイルを開くスクリプトを作成します。スクリプトを crontab スケジュールされたタスクに追加するか、サービスとして作成します。

    返事
    0
  • 为情所困

    为情所困2017-05-16 13:01:12

    CSVなのでPHPExcelを使う必要はありません。以前このライブラリを使用していました。 https://packagist.org/package... (PHP7のみをサポートしているようです)。デモは書きません。ドキュメントで自分で探します。何十万ものアイテムをストレスなくインポートできます。ありがとうございます。
    もう 1 つ、https://packagist.org/package... を紹介します。最初に csv とは何かを理解することをお勧めします。csv インポート クラスを自分で作成することもできます。これは最も効率的で軽量です。 。

    返事
    0
  • キャンセル返事