PHP - 脚本退出(包括异常退出),执行指定代码
之前做聊天室的时候有那么个需求就是当用户异常断线的时候就应该清除她的在线状态。因为当时对于flush不够了解,尝试了各种办法,好像都没办法在我们开发机上面执行相应的代码。后来知道是flush的原因。我现在就把所有尝试过的办法都相应地说一次.
第一 最开始的时候,看到了一个regist_shutdown_function()简直是激动惨了。结果后来才知道有好哈。不过是脚本完成或者中断的时候提供一个方法来执行相应的代码。并且在这个里面注册的函数相当的有限(虽然可以把这样传入array($this,method))但是对于环境中的已经存在的函数和类的使用受到了很大的限制,并且对于某些系统函数或者类的支持也并不是很好。
第二。后来在论坛看到某人说这个不过是当时没有面向对象这个概念,做这个函数不过是为了代替析构函数让我们可以在析构的时候进行一定的操作。=。=一听就有点恍然大悟的赶脚。
其实在面向对象之后析构函数已经完全具备这个功能了。根本就没有必要用这么老土的函数。并且经过测试,析构函数可以在脚本中断的情况下执行(前提是你知道脚本中断的流程并且会使用flush这个东西)
第三。这个只适合于我之前做的聊天室的那个情况。当然因为是长连接我们一直处在死循环睡眠的时候并且顺带flush。这个时候其实只要能够判断连接状态,并且在if里面执行相应的代码就好。例如
<?php
while(true){
echo 1;
ob_flush();
flush();
if(connection_status()){
echo 'finish';
}//end of if
}//end of while
?>
备注:致命错误不能激活析构函数
PHP - 脚本退出(包括异常退出),执行指定代码的更多相关文章
- Shell脚本实现每个工作日定时执行指定程序
我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序.那么有没有办法实现这一功能呢?答案是肯定的.我们可以运用Shell脚本简单实现这一功能. 原理很简单,Shell脚本内部 ...
- 在Spring Boot启动后执行指定代码
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等. 在Spring中可以通过ApplicationListener来实现相关的功能,不过在配合Spring Bo ...
- springboot框架实现启动项目执行指定代码
说明: 当有写代码需要在项目启动时执行的时候(即项目启动完成前),可以使用这个方法. 步骤: 创建一个启动类并在类上打上@Component注解 让这个类实现CommandLineRunner接口 重 ...
- PHP - 用户异常断开连接,脚本强制继续执行,异常退出回调
试想如下情况.如果你的用户正在执行一个需要非常长的执行时间的操作.他点了执行了之后,浏览器就开始蛋疼地转.如果执行5分钟,你猜他会干啥,显然会觉得什么狗屎垃圾站,这么久都不响应,然后就给关了.当然这个 ...
- hive使用python脚本导致java.io.IOException: Broken pipe异常退出
反垃圾rd那边有一个hql,在执行过程中出现错误退出,报java.io.IOException: Broken pipe异常,hql中使用到了python脚本,hql和python脚本最近没有人改过, ...
- C#WinForm程序异常退出的捕获、继续执行与自动重启
本文参考网上搜索的信息,并做了适当修改可以让捕捉到异常之后阻止程序退出. 另给出了通过命令行自动重启的方法. 如果一个线程里运行下面的代码 ; / a; 将会导致程序自动结束,而且没有任何提示信息 但 ...
- MHA监控进程异常退出
这两天遇到一个非常诡异的问题,打算和大家分享一下.只所以诡异估计是自己知识面不够吧.线上的MHA一直没有开启自动切换,都是手动切换的,最近开启了自动切换以后,退出securecrt窗口以后发现监控进程 ...
- 一次信号量引发的tomcat异常退出
近期在玩大数据.有个朋友找过来,说他线上的tomcat会莫名其妙的退出,表示非常苦恼,请我帮看看.每次他发现退出了,都通过腾讯云的WEB控制台登录,启动tomcat. 本着助人为乐(shao kao ...
- MHA监控进程异常退出(MHA版本:0.56)
最近遇到一个非常诡异的问题,mha后台进程自己中断退出了.以下是报错:Mon Dec 21 20:16:07 2015 - [info] OK.Mon Dec 21 20:16:07 2015 - [ ...
随机推荐
- HTTP错误类别
http_status_bad_request (400) the request could not be processed by the server due to invalid syntax ...
- 剑指offer第四章
剑指offer第四章 1.二叉树的镜像 二叉树的镜像:输入一个二叉树,输出它的镜像 分析:求树的镜像过程其实就是在遍历树的同时,交换非叶结点的左右子结点. 求镜像的过程:先前序遍历这棵树的每个结点,如 ...
- 玩转Eclipse — 自动代码规范检查工具Checkstyle
大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...
- Oracle基础查询
select * from teacher--女性老师编号.姓名select tno,tname,gendar from teacher where gendar='女'--姓韩的女性老师编号.姓名. ...
- h5移动端flexible源码适配终端解读以及常用sass函数
;(function(win, lib) { var doc = win.document;// win = window,lib = window.lib; var docEl = doc.docu ...
- 【加密算法】PFX文件提取公钥私钥
方法1: 原版PFX证书 openssl pkcs12 -in myssl.pfx -nodes -out server.pem 提取私钥 openssl rsa -in server.pem -ou ...
- 3.JMeter添加集合点
1.JMeter的集合点是通过添加定时器来完成的,在做性能测试时,真正的并发是不可能的,为了更真实的模拟并发场景,因此在需要压测的地方设置集合点,即可一起操作发送请求. 2.JMeter添加定时器,右 ...
- C# WMP 视频播放
1. C#播放器控件常用的方法介绍 右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Pla ...
- 关于cookie你不知道的
cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的.第一:每个特定的域名下最多生成20个cookie1.IE6或更低版本最多20个cookie2.IE7和之后 ...
- golang之交叉编译设置
俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcGOOS=lin ...