PHP-实现后台程序在关闭页面情况下依然运行并执行操作

PHP-实现后台程序在关闭页面情况下依然运行并执行操作

瑾兮 发布于 2017-09-26 字数 237 浏览 1742 回复 4

网页上执行一个php,然后关闭页面,能否让该后台程序还是能运行,并且在几秒之后执行一次某个操作!

ignore_user_abort(true) 网上说可以实现继续操作 但我没测试成功!能告诉下怎么用吗?
还有就是怎么实现时间的循环 几秒执行一次?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-10-26 4 楼

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

0 - NORMAL(正常)
1 - ABORTED(异常退出)
2 - TIMEOUT(超时)
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。

可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由 php.ini 的 ignore_user_abort 或由 httpd.conf 设置中对应的“php_value ignore_user_abort”以及 ignore_user_abort() 函数来控制。如果没有告诉 PHP 忽略用户的中断,脚本将会被中断,除非通过 register_shutdown_function() 设置了关闭触发函数。通过该关闭触发函数,当远程用户点击 STOP 按钮后,脚本再次尝试输出数据时,PHP 将会检测到连接已被中断,并调用关闭触发函数。

具体可以参考手册:
http://www.php.net/manual/en/features.connection-handling.php

夜无邪 2017-10-13 3 楼

换种思路,也可以达到这个效果,让PHP去执行服务器端的一个shell 脚本。

甜柠檬 2017-09-29 2 楼

问题有几点:

1、首先,判断页面关闭,你要用一个js代码去检测;

2、触发上面页面关闭的时候,js里面通过ajax调用一个Php接口,该接口接到请求后自动执行你设定的一个shell脚本,让它去执行你要一个操作(你写的逻辑处理,记得加上每5秒后再调用多一次shell,一直到你设定的上限次数为止)。

归属感 2017-09-27 1 楼

<?php
ignore_user_abort(TRUE);
set_time_limit(0);

while (1) {
//某一逻辑操作
sleep(5);
}

?>