前提・実現したいこと
現在Laravelを勉強中なのですが、10万件くらいのデータを一気にINSERTしようとすると通らずスルーされてしまいます。
エラー文言が出ないので原因が分からずになってしまっております。
3000件くらいの少ないデータだとDBに問題なく登録されるのですが、件数が多くなると(今回の場合約10万件)、保存されずスルーされてしまします。
ご存じの方いらっしゃいましたら教えていただけると幸いです。
該当のソースコード
$cnt = 0; // csvファイルを開く $handle = fopen($filePath, 'r'); while (($csvContent = fgetcsv($handle)) !== false) { // 配列に格納 $data[$cnt]['col1'] = $csvContent[0]; $data[$cnt]['col2'] = $csvContent[2]; $data[$cnt]['col3'] = $csvContent[6]; $data[$cnt]['col4'] = $csvContent[7]; $data[$cnt]['col5'] = $csvContent[8]; $data[$cnt]['col6'] = $csvContent[15]; $data[$cnt]['created_at'] = now(); $data[$cnt]['updated_at'] = now(); $cnt ++; } // 一括insert処理 DB::table('tables')->insert($zipCodeData);
試したこと
タイムアウトの処理も追加してみたのですが、特にに変わらずでした。
PHP のログやWebサーバーのログにも何も記録されていないのでしょうか?
そうですね、logにも出力されていない状態です。
ただ、今までコマンド処理で書いていたのですが、Controllerに書き換えてブラウザ上で実行したら500エラーが出ました。
リクエストが処理できていないようなので、容量オーバーとかなのでしょうか?
コマンド実行してエラーのログが一切どこにも出ないという事?
トランザクション処理している? CGIなどの外部プログラム実行時間は延長させてある? 決められた最大実行時間内に処理が完了しないから、なかったこと(ロールバック)されているような気もするけども。
CSVの容量は?
あとそのCSVはどのようにサーバーに送られてるのでしょう。
置いてあるものを読み込ませているのかアップロードもPHPでしてるのか。