Home  >  Article  >  Backend Development  >  shell - linux kill php进程,对PHP的生命周期产生怎样的影响?

shell - linux kill php进程,对PHP的生命周期产生怎样的影响?

WBOY
WBOYOriginal
2016-06-06 20:10:251043browse

如果我kill PHP的进程

PHP的进程是否会执行 __destruct()析构函数?

对PHP的生命周期起到什么影响?

shell - linux kill php进程,对PHP的生命周期产生怎样的影响?

我觉得linux KILL的话,已经脱离了PHP的掌控了,跟PHP生命周期已经没有关系了,是这样理解么?
如果这样,那PHP进程占用的内存是谁来维护?

另:如果我的需求是:通知PHP进程结束(比如PHP当前是个死循环),让PHP自己完成生命周期,要怎么处理?

回复内容:

如果我kill PHP的进程

PHP的进程是否会执行 __destruct()析构函数?

对PHP的生命周期起到什么影响?

shell - linux kill php进程,对PHP的生命周期产生怎样的影响?

我觉得linux KILL的话,已经脱离了PHP的掌控了,跟PHP生命周期已经没有关系了,是这样理解么?
如果这样,那PHP进程占用的内存是谁来维护?

另:如果我的需求是:通知PHP进程结束(比如PHP当前是个死循环),让PHP自己完成生命周期,要怎么处理?

类似在windows下强制结束进程,会提示你丢失有关数据,因为进程在不知情的情况下被突然结束,不能有效处理善后。

kill 进程已经不在PHP的管理范围了,这个是系统层面的了。

所以析构函数也不会执行,因为执行的前提是PHP主动触发,现在PHP都没了。

kill前是根据配置申请内存,php自己维护、回收。kill之后的内存释放当然是属于linux维护了,即使剩余僵尸进程,也是系统管理。

通知PHP进程结束,可以试试信号,fpm自带信号处理,restart、stop等。

通常不会,php代码通常都不会去捕获kill发送的信号。
而且我也不确定php是不是有能力捕获。

另:如果我的需求是:通知PHP进程结束(比如PHP当前是个死循环),让PHP自己完成生命周期,要怎么处理?

解决方法

<code>开始时间 = 当前时间
生命周期时间 = 300
while(ture)
{
     if (当前时间 - 开始时间) >=300
         退出
     else
         执行业务逻辑
}</code>

不满足题主需求~静待高明

KILL一个进程,进程的内存当然由操作系统回收
如果你有信号捕获的需求,请看PHP的PCNTL扩展

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn