首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php提前响应请求继续执行代码(伪异步)

在很多业务需求中,我们都可能需要先让php给浏览器输出,然后在后台慢慢处理其他不用输出耗时的业务. 那么,php该怎么实现这个功能呢?...ignore_user_abort(true); 首先,我们先来了解下ignore_user_abort(true);这个函数 这个函数可以忽略客户机的断开,继续执行php代码 那到底这个用来干啥的呢?...set_time_limit(0); 在上面讲到,如果启用ignore_user_abort 则会让php一直执行,直到异常终止,而在php常规web模式下,默认有个执行超时时间(30秒),当执行到...30秒时,会直接终止该php进程,可使用set_time_limit(0),设置为用不超时,这样的话,客户端就算断开,就算超过30秒,php进程也会一直执行下去,直到执行完成 实时输出 在我之前的一篇讲...自动关闭页面)"; fastcgi_finish_request();//真正的结束响应,后面的echo将不起作用 //这里还在巴拉巴拉处理事情 $i=0; while($i<100){     //

3.8K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于PHP脚本和浏览器连接深入解析

    点击关注⬆️nginx⬆️,学习lnmp 在网上关于PHP连接处理的问题,回答的比较实际的是以下这篇文章: 在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况: 0 - NORMAL(正常)...该处理过程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 设置中对应的“php_value ignore_user_abort”以及 ignore_user_abort...--8 我是在输出8时,点击了STOP,再看看后台PHP的日志: [2013-12-05 12:00:08] > seconds:1 connection_status:0 connection_aborted...向端要输出9时,发现前端的连接断掉了,才判断出connection_status()=1,而connection_aborted()也变成了1 因此对于连接状态的判断,是PHP在向前台输出时才知道的,如果没有向前台输出...php set_time_limit(30); echo 'ignore_user_abort:'.ignore_user_abort().'

    1.1K10

    php关闭浏览器继续执行踩坑记录

    最近在项目中需要批量刷数据,但是由于项目的框架太老无法简单的使用命令行,而且项目比较急,所以想到之前的php关闭浏览器继续执行的路子,我记得php客户端断开继续执行需要配置nginx和fpm和php的配置...,当时既修改php又修改fpm,但是找不到当时记录的配置信息了,后来想到自己之前测试过一个方法可行,于是翻出来了,代码如下://设置客户端断开依然运行ignore_user_abort(true);//...        fastcgi_finish_request();    }    else    {        //cgi/fast-cgi        set_time_limit(0);        ignore_user_abort...PHP_EOL;        file_put_contents($file, $text);        sleep(1);    }};//正式执行任务execute($func);以上代码已经在...phpenv集成环境中包含了fpm,貌似在windows中没看成有多大作用,fpm系列函数不可用,不过不影响执行。切记!

    54630

    PHP计划任务执行

    V站笔记 我们的PHP程序有时候需要定时执行,我们可以使用 ignore_user_abort 函数或是 在页面放置js让用户帮我们实现。但这两种方法都不太可靠,不稳定。...二、在Crontab中使用URL执行脚本 如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。...00 * * * * lynx -dump http://3aj.cn/script.php 下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。...*/10 * * * * /usr/bin/wget -q -O temp.txt http://3aj.cn/script.php 再介绍一下在Windows下php计划任务的实现 1、新建一个3aj.php...php     ignore_user_abort(); // 关掉浏览器,PHP脚本也可以继续执行     set_time_limit(3000); // 设置程序的执行时间为3000秒//

    2.8K50

    PHP手册阅读笔记

    永久连接的行为和前面所描述的多过程模型在本质上是相同的。注意 PHP 3 不支持 SAPI。...例如,在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。这有可能导致预料之外的行为。 在 PHP 中引用意味着用不同的名字访问同一个变量内容。...这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。 PHP中的类 类是变量与作用于这些变量的函数的集合。PHP 5 引入了新的对象模型(Object Model)。...在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。...该处理过程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 设置中对应的“php_value ignore_user_abort”以及 ignore_user_abort

    1.2K40

    PHP定时任务执行实现

    php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 ini_set...> cron.php文件 ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去...1、在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本,每一小时执行 myscript.php 如下: #...2、在Crontab中使用URL执行脚本 如果你的PHP脚本可以通过URL触发,你可以使用 lynx 或 curl 或 wget 来配置你的Crontab。...00 * * * * lynx -dump http://www.sf.net/myscript.php 下面的例子是使用 CURL 访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。

    2.9K20

    不死马的原理和利用

    在以往的一句话木马中,密码简单方便呈现给了用户,如果在AWD中,知道了密码的话,就可以反手打一波其他的主机,因为如果是被批量种马的话,所有人都一样,这也就是"骑马",在很多场比赛中,我的队伍(自由公式)...php ignore_user_abort(true); set_time_limit(0); @unlink(__FILE__); $file = '.ZYGS.php';...> 解析 ignore_user_abort(true); //设置与远程客户端断开后是否继续执行脚本,true即不断开 set_time_limit(0); //设置脚本最大的执行时间,0即没有时间限制...php ?...$file后面的值设置成你要生成的文件名,连接也是用这个文件名字,就好像是.ZYGS.php 经过md5值的加密,以及不断生成木马文件,便成为了维持权限的好物,在bugku的AWD中,给种下不死马的话,

    5.4K00

    PHP实现执行定时任务的几种思路详解

    ),所以,我们可以利用bat命令文件在windows服务器上面实现PHP定时任务。...使用ignore_user_abort(true)和sleep死循环 在一个php文档的开头直接来一句: ignore_user_abort(true); 这时,通过url访问这个php的时候,即使用户把浏览器关掉...php ignore_user_abort(true); set_time_limit(0); date_default_timezone_set('PRC'); // 切换到中国的时间 $run_time.../cron-switch')) break; // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用 $gmt_time = microtime(true); // 当前的运行时间...但是有一个问题,也就是如果用户直接访问这个php,实际上没有任何作用,页面也会停在这个地方,一直处于加载状态,有没有一种办法可以消除这种影响呢?fsockopen帮我们解决了这个问题。

    97910
    领券