如何停止php执行

WBOY
WBOYoriginal
2016-06-23 14:15:072228parcourir

我现在搞了个采集的php代码,把网页的数据采集下来保存在桌面,现在测试的时候发现一个问题,在浏览器关闭的情况下,php还在继续执行生成数据,问题来了:如何在关闭浏览器或者点击浏览器上url输入后面的停止按钮使得php代码不再继续执行?


回复讨论(解决方案)

php默认是关闭就停止执行了啊,你用ajax请求php吗?

回复楼上的没有用ajax

直接关闭浏览器就停止了,当前的PHP操作了。

建议从几个角度去查问题:
1.浏览器的进程是否结束
2.Linux的情况,使用不同WEB服务时,配置是否正确,是否存在配置导致浏览器关闭,但是WEB服务的当前进程仍然在执行。

伪进程?
很多人想搞还搞不来呢!
你需要在你的代码中设施并处理可以触及到的终止信号

最近我也发现了这个问题, 浏览器关闭, 程序是会执行的。 

但是应该是执行完当前的内容后, 就会停止。

如果你是本地测试, 我一般都直接重启服务。

你要做采集, 建议还是用bin方式来做。

最近我也发现了这个问题, 浏览器关闭, 程序是会执行的。 

但是应该是执行完当前的内容后, 就会停止。

如果你是本地测试, 我一般都直接重启服务。

你要做采集, 建议还是用bin方式来做。

bin方式指的是?求指点

set_time_limit();

设置脚本最多执行的时间,是最简单的方法。

呵呵,你虽然关了浏览器,但是程序的指令早就已经发出去了,再他未完成所有的指令之前,假如没有给停止命令(是的是跟底层,服务器有关的指令,不是指管浏览器),之前的未完成的指令会继续执行,知道指令完成或者被迫停止(比如重启服务器,或者重启web服务程序)

加个exit()试试看

嗯,我的采集也出现了这个问题,关闭了浏览器,还一直在下。我的猜想是跟php curl的工作机制有关,具体原因不清楚。

起初我注销电脑都不行,一定是重启。
可能因为是http协议,最后我在进程里关闭浏览器的进程就可以了;另外我觉得可以关闭apache服务应该也可以,没试过。

程序设置了最大执行时间很长,程序里面用了sleep主要防止采集的太快封ip,不知道和这个有没关系。

程序设置了最大执行时间很长,程序里面用了sleep主要防止采集的太快封ip,不知道和这个有没关系。 目测和这个没有关系,php curl是可以支持代理的。

跟这个没关系,但跟你的程序写法有关系,由于并没有看到你的程序,所以也不能明确的说

一般的说:
当关闭浏览器,程序会终止(php 还专门设有函数来改变这个行为),是有条件的
这个条件就是程序必须有输出
php 只在有输出时才去检查到用户的连接是否断开

先在任务管理器确认浏览器进程是否关闭了再谈更高深的问题吧

我关浏览器通常都要等几分钟进程才结束,机器年代久远……

还是没找到解决办法,只有重启apache才能终止。

就是php的命令行方式, 而且最好是在Linux下面使用, 稳定。 

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn