2012-10-12 73 views
1

这里是我的表格的过程:使用Codeigniter通过多步表单“传送”大量数据的最佳方法。

第1步:用户上传CSV。系统解析它并接受一些记录,否认其他一些记录。

第2步:用户可以看到有多少人被接受,有多少人没有作为确认。用户可以选择只处理来自CSV的成功记录,或一起取消处理(通过取消按钮或仅返回主页)。

现在,将“CSV”数据“保存”到第2步及以后(如果他们想继续)的最佳方式是什么?我正在考虑将所有记录存储到步骤1中的数据库中,但这会导致大量不必要的数据库活动,并可能使数据库过大并留下记录。我也在考虑如果他们选择继续第2步,那么只需要成功的记录就可以将服务器上的文件重新提取出来,但是我必须始终清理一堆所有文件(例如,如果他们只是在第2步关闭浏览器)。第三,在会话中存储会使会话过大。

在此先感谢!

+0

出于好奇,CSV有多大? 100行? 1K? 10K? 1mil的? –

+0

CSV文件可以有数百行。我认为几千个也是完全可能的。 –

+0

如果是这种情况,将它们插入数据库中进行每次上传不会影响您的性能,并且看起来是理想的解决方案。如果您担心存在大量遗留记录,则可以每隔几天运行一次cron作业,清理旧的剩余记录。 –

回答

1

我看到3点可能的选择:

1 - Store it in db and look it up on every page 
2 - Store it in session 
3 - Pass it through url in query string 

我不知道你有多少数据传递,但如果它太大,以保持在会议,并太大通过URL传递,那么db似乎是你最好的解决方案。就性能而言,拨打电话通常不会造成或破坏您的网站。

相关问题