宝哥软件园

用php ajax导入大数据的问题处理

编辑:宝哥软件园 来源:互联网 时间:2021-10-19

让我们从头到尾谈谈问题。1按照我最初的想法,先上传文件,然后阅读。问题来了。文件大的时候上传慢,导致客户看到的操作总是处于等待状态,不人道。解决方案:这就是我做的。大神有更好的解决办法。请介绍我。我先上传文件,然后将文件保存在一个名为import的特定文件夹中,然后返回一个文件名。这可确保文件上传成功。我可以使用js在客户返回姓名时给客户一个提示。然后ajax要求php读取文件并将其插入数据库。但问题来了。问题当我使用ajax请求php读取文件并将其插入数据库时,我遇到了一个问题,那就是ajax请求总是在1分钟内被中断。我想这应该是php max_execution_time执行时间最长的原因。结果我改成了300秒。这样,我认为它将是apache的最大获取时间max_input_time。我将在代码中添加一个ini_set结果,使用ini_get检查max_input_time,使用ini_set设置是无效还是60秒。我还是不知道为什么。如果大神知道,请回复我。先谢谢你,菜鸟。我没办法。我必须去服务器修改php.ini配置。经理说他不会改,但为了测试偷偷改了——最后改回来了。经过修改、测试,还是不行。还是会在一分钟内执行超时?我真的很困惑。我不知道为什么。求教。没办法。这种方法行不通。5m的文件只能由分支读取。然后是对代码的修改,分支读取是这样操作的,首先是ajax请求,然后一次读取2000条数据,然后处理这2000条数据并插入到数据库中(文章最后介绍了一个有用的分支读取函数)。然后,每次执行ajax时,都会返回一个状态符号和这次读取的行数,然后下次再次读取。直到最后读完。中间还有一个问题:我是在每一行数据都反复检查的时候遇到的。事实就是如此。我循环获得的内容,然后检查每一行是否存在。当我判断$count是否大于0时,当它已经存在时,我使用继续执行下一个循环。但是当我导入10,000个项目时,我总是在8,000个项目时报告错误,说服务器有内部错误。很无聊,不知道问什么,只能用if else代替。好奇。小提醒:插入数据库时,不要一个一个的插入,最好插入到AAA (` xx '、` XXX `)值(' 111 '、' 111 '、(' 222 '、' 222 ')中。这样会快很多。

行号读取函数SplFileObject是一个非常容易使用和推荐的类库。如果你知道我的问题,请大神指教。复制代码如下:函数getfilelines ($ filename,$ startline,$ endline,$ method=' Rb '){ $ content=array();$filename=DATA_PATH.DS .“导入”。DS。$文件名;$ count=$ endLine-$ startLine;$fp=new SplFileObject($filename,$ method);$ FP-seek($ StartLine);//转到n行,寻道方法参数从0开始计数,为($ ii=0;$ ii=$ count$ ii){ $ content[]=$ FP-current();//current()获取当前行内容$ FP-next();//下一行}返回array _ filter($ content);//array_filter筛选器:false,null,' ' }

更多资讯
游戏推荐
更多+