问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求助各位大神,请问PHP脚本如何实现后台执行

发布网友 发布时间:2022-07-31 10:47

我来回答

1个回答

热心网友 时间:2024-07-31 10:51

ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
后台运行的后面还要,set_time_limit(0); 除非在服务器上关闭这个程序,否则下面的代码将永远执行下去止到完成为止。
如果程序运行不超时,在没有执行结束前,程序不会自动结束的.
=========================================
//PHP 中如何 在客户端触发,然后在服务器端执行一个函数,页面关闭也继续执行。要先返回用户请求不要等待时。

ob_end_clean();#清除之前的缓冲内容,这是必需的,如果之前的缓存不为空的话,里面可能有http头或者其它内容,导致后面的内容不能及时的输出
header("Connection: close");//告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应
header("HTTP/1.1 200 OK"); //可以发送200状态码,以这些请求是成功的,要不然可能浏览器会重试,特别是有代理的情况下
//return false;//加了这个下面的就不执行了,不加这个无法返回页面状态,浏览器一直在等待状态,可以关闭,但不是要的效果。
//die(); 或 return ;也一样不执行下面的
//rundata();
//register_shutdown_function("rundata");
//return ;
ob_start();#开始当前代码缓冲
echo "running,,,,.";
//下面输出http的一些头信息
$size=ob_get_length();
header("Content-Length: $size");
ob_end_flush();#输出当前缓冲
flush();#输出PHP缓冲

#休眠PHP,也就是当前PHP代码的执行停止,1秒钟后PHP被唤醒,
#PHP唤醒后,继续执行下面的代码,但这个时候上面代码的结果已经输出浏览器了,
#也就是浏览器从HTTP头中知道了服务端关闭了连接,浏览器将不在等待服务器的响应,
#反应给客户的就是页面不会显示处于加载状态中,换句话说用户可以关掉当前页面,或者关掉浏览器,
#PHP唤醒后继续执行下面的代码,这也就实现了PHP后台执行的效果,
#休眠的作用只是让php先把前面的输出作完,不要急于马上执行下面的代码,休息一下而已,也就是说下面的代码
#执行的时候前面的输出应该到达浏览器了
sleep(1);
echo '这里的输出用户看不到,后台运行的';

//下面代码的任何输出都不会输出给浏览器,因为http连接已经关了,
//所以下面的代码的执行属于后台运行的
ignore_user_abort(true); // 后台运行,这个只是运行浏览器关闭,并不是直接就中止返回200状态。
set_time_limit(0); // 取消脚本运行时间的超时上限
rundata();
function rundata(){//do something}
=========================================
用ignore_user_abort函数实现php计划任务
代码如下:
<?php
ignore_user_abort(true);
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(300); //半小时执行一次
}
?>
=======================================
int ignore_user_abort ( [bool setting] )
这个函数的作用是指示服务器端在远程客户端关闭连接后是否继续执行下面的脚本。
setting 参数是一个可选参数。如设置为True,则表示如果用户停止脚本运行,仍然不影响脚本的运行(即:脚本将持续执行);如果设置为False,则表示当用户停止运行脚本程序时,脚本程序将停止运行。
下面这个例子,在用户关闭浏览器后,该脚本仍然后在服务器上继续执行:
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
do{
sleep(60); // 休眠1分钟
}while(true);
?>
除非在服务器上关闭这个程序,否则这断代码将永远执行下去。
-------------------------------------------------------------------------
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
echo 'start.';
sleep(1000);
echo 'end.';
?>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
弱弱的问一句R9 270X显卡怎么样~ 能带得起我的AMD 240CPU么?_百度知 ... i54570cpu华硕z87a主板要配多少的内存条和显卡 i5 3570k配R9 270X显卡,用什么主板和电源? 很容易上火是什么原因 口干舌燥五心烦热失眠多梦夜不能寐请问是什么原因,吃什么能有效... 想问看大家对老妻少夫的问题有何看法? ...战记第十三章第6关打法 山海战记13-6攻略-手游攻略-游戏鸟手游网 ...战记第十七章第1关打法 山海战记17-1攻略-手游攻略-游戏鸟手游网 ...山海战记9-6图文攻略-手游攻略-游戏鸟手游网 ...战记第十二章第2关打法 山海战记12-2攻略-手游攻略-游戏鸟手游网 QQ农场怎样保证一直有洲际订单 qq农场运输机洲际订单怎么开通 请问,开一个成人用品需要多少资金?加盟费需要多少? 6和6s谁的性价比高 苹果6和6s性价比哪个更好 vivox9和酷比i13POr谁大? 拼多多现金大转盘最后0.01个钻石怎么一直是小额红包 现金大转盘100最后0.01钻石抽中福袋打款一毛还能成功吗 LabVIEW是否能像C语言一样 c语言编译器在哪下载 iPhone 6s 和 iPhone 6s plus 该选哪个 C语言矩阵的编程 用C语言编写如下矩阵 C语言 矩阵变换编程 怎样用C语言写矩阵? C语言:编程 矩阵 tension\intension的,请详细讲述,好的有赏~ intension 和 intensity有什么区别??字典里说它们都表示“强度”“紧张... word文档上面的一条横线怎么去掉,不是页眉上的,是一条占整页宽度的横 ... 陈皮糖是生活中很常见的零食,你知道陈皮糖的功效与作用吗? 有谁知道2020年三明注册公用设备工程师有哪些报考要求? 关于本科毕业参加注册设备工程师? 化工设备工程师的职业要求: 浙江省嘉兴有什么大学 浙江嘉兴有什么大学吗 浙江嘉兴都有什么大学 电子计算机使用的C语言有那些特点? 嘉兴哪个大学规模最大 嘉兴市三甲医院有哪些 嘉兴三甲医院的有哪些? 嘉兴三院怎么样?中医院呢? 怎么做醋泡鸭爪 制作醋泡鸭爪的方法 秘制青桔陈醋鸭爪怎么做如何做好吃 醋泡鸭爪的做法大全 泡鸭爪用什么醋 大一c语言程序设计:预测身高,男生身高=(爸身高+妈身高)×0.54 女生... 用C语言编程预测身高 苹果手机接不显示内容怎么设置 c语言 预测身高小程序问题 请问股票跌掉的市值哪去了,也就是说我们赔掉的钱哪去了 如何更改上的电话号