php中怎么实现后台执行??
php从文本读取大量数据插入数据库,怎么实现,后台执行,而不让浏览器继续等待,并且浏览器的页面可以正常跳转,实现php和浏览器的异步...
php从文本读取大量数据插入数据库,怎么实现,后台执行,而不让浏览器继续等待,并且浏览器的页面可以正常跳转,实现php和浏览器的异步
展开
4个回答
展开全部
用 ajax 实现异步加载
然后
i
gnore_user_abort(true);
//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);
while(1) {
$fp = fopen('time_task.txt',"a+");
$str = date("Y-m-d h:i:s")."\n\r";
fwrite($fp,$str);
fclose($fp);
sleep(5); //半小时执行一次
}
追问
这个我试过,确实是可继续执行,但浏览器的页面不能跳转
追答
不能跳转是因为ajax 没有执行完
可以用 abort(); 函数 强制中断ajax执行
具体信息 你可以搜索 jquery ajax 中断
我一般都用jquery ,原生的js 不太会写了
展开全部
提供一个思路,我是这么做的,写一个读取文件内容的模块
function rf($f,$sp){
//$f为文件路径,$sp为读取位置
.....
fseek($f,$sp);
//读取指定长度的内容
$content = fread($f,$len);
.....
return $nextsp //返回下次要处理的位置,如果到文件尾,就置 -1.
}
然后后台通过AJAX调用以上处理文件,如果返回值>0就继续调用,如果为-1就结束
function rf($f,$sp){
//$f为文件路径,$sp为读取位置
.....
fseek($f,$sp);
//读取指定长度的内容
$content = fread($f,$len);
.....
return $nextsp //返回下次要处理的位置,如果到文件尾,就置 -1.
}
然后后台通过AJAX调用以上处理文件,如果返回值>0就继续调用,如果为-1就结束
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
php想要直接异步挺难,对多线程支持也不好
一般可以另外弄个消息队列来处理任务,php端发送任务到消息队列
另外一个程序去队列中取任务完成
一般可以另外弄个消息队列来处理任务,php端发送任务到消息队列
另外一个程序去队列中取任务完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说的不够详细,PHP只是个代码 你说“实现PHP和浏览器异步??” 没明白你要表达什么
追问
当插入大量数据到数据库时,需要用很长时间,总不能让浏览器一直等待插入结束吧,就是让这个漫长的处理数据的过程,后台执行,浏览器正常跳转到其他页面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询