要执行一个大批量的数据导入操作,执行大约一个小时,显示"无法找到页面"的那个页,
任务执行前设置了如下代码
        set_time_limit(0);
        ignore_user_abort(true);        //执行任务..
现在任务还是可以继续运行的,但是怎么能不出现“无法找到页面”呢(任务执行完成后,要出一个执行报告的)
好像是一个响应参数有关吧?
请高人指点一下吧。

解决方案 »

  1.   

    建议你还是用 AJAX 吧。先发一个 AJAX 请求来启动“长任务”,然后也别指望这个请求有什么返回结果,只要保证服务器端能够不间断运行就好(你已经做到了)。然后陆续发 AJAX 请求来查看任务执行结果。你的“长任务”要能够输出一个标记来指示任务进展情况,可以写一个文件、用共享内存、用数据库、用 cache 等等,总之能被别的 HTTP request 查看到即可。这个“异步方案”比之于你原来的“同步方案”,优点在于:1. 客户端友好:不会长时间“卡”在一个状态,能够动态地显示出处理进展情况(当然这要求你的“长任务”能够标称出自己的进展情况)。2. 过程可靠:不会因为关闭浏览器窗口而导致看不到最后的“报告”,甚至你的客户端重启机器,只要再次打开页面,还是能够继续显示进展情况(当然这需要页面代码做适当处理)。