php中怎么实现后台执行??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中怎么实现后台执行??相关的知识,希望对你有一定的参考价值。

php从文本读取大量数据插入数据库,怎么实现,后台执行,而不让浏览器继续等待,并且浏览器的页面可以正常跳转,实现php和浏览器的异步

用  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 不太会写了

参考技术A 提供一个思路,我是这么做的,写一个读取文件内容的模块
function rf($f,$sp)
//$f为文件路径,$sp为读取位置
.....
fseek($f,$sp);
//读取指定长度的内容
$content = fread($f,$len);
.....

return $nextsp //返回下次要处理的位置,如果到文件尾,就置 -1.

然后后台通过AJAX调用以上处理文件,如果返回值>0就继续调用,如果为-1就结束
参考技术B php想要直接异步挺难,对多线程支持也不好
一般可以另外弄个消息队列来处理任务,php端发送任务到消息队列
另外一个程序去队列中取任务完成
参考技术C 说的不够详细,PHP只是个代码 你说“实现PHP和浏览器异步??” 没明白你要表达什么追问

当插入大量数据到数据库时,需要用很长时间,总不能让浏览器一直等待插入结束吧,就是让这个漫长的处理数据的过程,后台执行,浏览器正常跳转到其他页面

asp.net后台弹出一个确认对话框,点击确定时执行我写的方法,点击取消不执行,该怎么实现?

if(txt_WH1.Text !="")
Response.Write("<Script Language='JavaScript'>if ( window.confirm('Are You Sure To Submit?')) else ;</script>"); ok(); else Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('请填写数字!');</script>");
我想实现的功能是点击确定后会执行ok()这个方法,点击取消则不执行,而现在无论是点击确定还是取消都会执行,该如何修改呢?谢谢各位了!

思路有点乱啊啊,既然是要验证文本框是否为空,我觉得最好使用客户端控件,在客户端验证这样可以减少服务器负担。你可以将txt_WH1设置为客户端文本框,然后在提交按钮的OnClientClick里调用客户端脚本:OnClientClick=“mm()”

<Script Language='JavaScript'>
function mm()
var mytxt=document.getElementById("txt_WH1");
if(mytxt.Text ="")
alert('请填写数字!');
return false;

else
if ( window.confirm('Are You Sure To Submit?'))
…………

return true;
else
………………
return false;
;
</Script >
参考技术A Response.Write输出完之后后面的代码肯定是会执行的,你这个前台要用ajax调后台方法,类似于调Webservice的方法;或者用通过<%%>直接调用 参考技术B if(txt_WH1.Text !="")
Response.Write("<Script Language='JavaScript'>if ( window.confirm('Are You Sure To Submit?')) ok(); else alert('请填写数字!');</script>");


这样修改试试呢?

以上是关于php中怎么实现后台执行??的主要内容,如果未能解决你的问题,请参考以下文章

php后台运行以及定时任务的4种实现原理以及代码

.net 执行一个查询大量数据的方法 怎么用线程实现让它后台运行

php提交执行成功后扣除积分?

前台调用后台事件和方法实现小结

php执行后台进程

在后台从php执行.bat文件