热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php浏览器执行自动脚本,关闭正执行的php脚本浏览器后,如何使php脚本转入后台运行...

通常来说,客户端浏览器连接断开后,服务器会中止脚本.不过可以做到连接断开,但是服务器继续执行脚本。可以参考下PHP手册,其中关于连接处理的

通常来说,客户端浏览器连接断开后, 服务器会中止脚本.不过可以做到连接断开,但是服务器继续执行脚本。

可以参考下PHP手册,其中关于连接处理的解释很详细:

在 PHP 内部,系统维护着连接状态,其状态有三种可能的情况:

0 - NORMAL(正常) 1 - ABORTED(异常退出) 2 -

TIMEOUT(超时) 当 PHP 脚本正常地运行 NORMAL

状态时,连接为有效。当远程客户端中断连接时,ABORTED

状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP

按钮导致的。当连接时间超过 PHP 的时限(请参阅

set_time_limit() 函数)时,TIMEOUT

状态的标记将被打开。

可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由

php.ini 的 ignore_user_abort 或由

httpd.conf 设置中对应的“php_value

ignore_user_abort”以及

ignore_user_abort() 函数来控制。如果没有告诉 PHP

忽略用户的中断,脚本将会被中断,除非通过

register_shutdown_function()

设置了关闭触发函数。通过该关闭触发函数,当远程用户点击 STOP

按钮后,脚本再次尝试输出数据时,PHP

将会检测到连接已被中断,并调用关闭触发函数。

脚本也有可能被内置的脚本计时器中断。默认的超时限制为 30

秒。这个值可以通过设置 php.ini 的

max_execution_time 或 httpd.conf

设置中对应的“php_value

max_execution_time”参数或者

set_time_limit()

函数来更改。当计数器超时的时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,可以通过调用

connection_status()

函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用,该函数将返回

2。

需要注意的一点是 ABORTED 和 TIMEOUT

状态可以同时有效。这在告诉 PHP 忽略用户的退出操作时是可能的。PHP

将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时会发现函数

connection_status() 返回 3。

举例来说:

function outputStringAndCloseConnection2($stringToOutput)

{

set_time_limit(0);

ignore_user_abort(true);

// buffer all upcoming output - make sure we care about compression:

if(!ob_start("ob_gzhandler"))

ob_start();

echo $stringToOutput;

// get the size of the output

$size = ob_get_length();

// send headers to tell the browser to close the connection

header("Content-Length: $size");

header('Connection: close');

// flush all output

ob_end_flush();

ob_flush();

flush();

// close current session

if (session_id()) session_write_close();

}

?>

其中的关键就是这么一句:ignore_user_abort(true);



推荐阅读
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析Nginx中的Location指令及其属性
    本文将详细探讨Nginx配置文件中关键的location指令,包括其三种匹配方式(精准匹配、普通匹配和正则匹配),以及如何在实际应用中灵活运用这些匹配规则。此外,还将介绍location下的重要子元素如root、alias和proxy_pass,并解释相关参数的使用方法。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
author-avatar
小菜一蝶2502902341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有