どれだけの数のレコードを、どのような形でインサート処理をしているのか分かりませんが、負荷がかかってサーバが落ちる(処理がタイムアウトする?)のであれば、対象のCSVファイルを分割するしかありません。
落ちるというのがどういう現象の事を差しているのか分かりませんが、
タイムアウトだったら
set_time_limit()をループ内に入れてみてください。
http://php.net/manual/ja/function.set-time-limit.php
また、補足になりますが
大量のデータを取り込む場合はフォームからアップロードした処理で一気に行うのではなく、
1.アップロードする機能
2.インサートする機能(バッチ)
と分けてみてはいかがでしょう?