我在控制器中有这个:
function foo() {
// my code
redirect(site_url('competitor/main'), 'refresh');
$this->foo2();
}
function foo2() {
// upload a file
}
如何在使用foo2()
方法后保持redirect()
运行?
我想在foo2()
之后拨打redirect()
的原因是因为我想节省上传时间。当用户在site_url('competitor/main')
上传文件时,它将转到foo()
功能,然后立即重定向回competitor/main
页面,foo2()
将在后台运行。
答案 0 :(得分:1)
Codeigniter的redirect()
函数exit
。因此,在重定向之前调用该函数。
$this->foo2();
redirect('competitor/main', 'refresh');
注意:此处不需要site_url()
,如果您使用相对网址,重定向功能会添加它。
我不确定foo2()
做了什么,但这看起来有点不确定......
如果由于某种原因你不能这样做,那么用本机PHP发送标题。
header("Refresh:0;url=".site_url('competitor/main'));
$this->foo2();
exit;
当用户在
site_url('competitor/main')
上传文件时,它将转到foo()
功能,然后立即重定向回竞争对手/主页,foo2()
将在后台进程中运行。
这可能不是处理上传的方法,因为您无法处理错误。还有其他几种方法可以建议:
答案 1 :(得分:0)
无法保持上传运行并将同一窗口重定向到其他位置。 @Wesley Murch的例子会立即开始刷新,但只有在上传完成后才能完全加载页面,而不会在用户端保存任何时间。
您可以使用shell_exec在后台运行php,但不能上传。我建议使用Javascript为上传创建一个弹出窗口,如果你想让它在后台继续。
否则请尝试Uploadify之类的内容。它不会使上传速度更快,但它会向用户显示清晰的上传进度,并提供良好的体验。