我正在使用 csvreader.php 来处理这项工作。所以问题是当我尝试在localhost上传30k行的文件时,脚本工作正常,但是当我使用ipage主机时它会在30后给我 内部服务器错误 第二。 这是我正在使用的代码:
$result = $this->csvreader->parse_file('/downloads/test.csv);//path to csv file
$this->admin_model->add_csv($result);
这是我正在使用的模型:
public function add_csv($data)
{
$this->db->insert_batch('my_contacts', $data);
}
正如我之前说的那样,脚本在localhost(超过30k行)和ipage上工作正常,但是如果行不到1k。 那么我怎样才能使这个脚本在ipage上工作就像localhost
一样答案 0 :(得分:1)
如果CSV数据是安全的,并且您确定没有安全风险,请尝试使用MySQL命令:LOAD DATA INLINE
。
https://dev.mysql.com/doc/refman/5.1/en/load-data.html
导入大型CSV文件时,快速 。
答案 1 :(得分:0)
如果它在30秒内死亡,那几乎可以肯定是服务器超时。检查您的php.ini和服务器配置设置。
过去,我必须批量处理非常大的数据库插入作业,导致导入,转换和写入的开销很高。
答案 2 :(得分:0)
由于CSV的大小,文件执行时间可能太长。
尝试增加页面最长执行时间的设置,例如将以下内容添加到页面顶部
ini_set('max_execution_time', 300);
注意,300表示300秒或5分钟。
答案 3 :(得分:0)
我确实让它工作,我修改了php.ini,我做了:
Max_input_time = -1 // unlimited
Max_execution_time = -1 // unlimited
Memory_limit = 258M
我尝试使用max_execution_time = 1000但是在我无限制地使用它之后它没有工作。 无论如何,谢谢你们所有人。
答案 4 :(得分:0)
解决此类问题的最可靠解决方案是逐步实现。即不要尝试在一次执行中添加所有记录。
您的CSV文件有很多行,每行应该是数据库中的一行。让它像分页一样,在每一页中,让我们说,它会插入15行。
换句话说,从CSV文件中读取并对其内容进行分页,然后插入这些内容,然后使用任何重定向技术(我更喜欢client-side,即使用javascript)重定向到下一页。