是否可以防止zend引擎释放资源?

Posted

技术标签:

【中文标题】是否可以防止zend引擎释放资源?【英文标题】:Is it possible to prevent zend engine to free resources? 【发布时间】:2011-03-25 14:24:08 【问题描述】:

是否可以防止zend引擎释放php中分配的资源?

例如,当一个进程被 forked() 并且资源被复制到子进程时,当子进程或父进程退出时,资源是空闲的,因此其他进程无法再访问它们。

【问题讨论】:

还是没有自动释放资源? 【参考方案1】:

释放资源不是问题,因为父母和孩子无法访问彼此的资源。也许你在谈论mysql连接。问题是即使你不调用mysql_close() 它也会被php 调用。这是一个例子

mysql_connect(...); 
if(pcntl_fork()) exit();
mysql_query( ... ); //no mysql connection here 

我听说父母可以通过SIGKILL 杀死自己来防止这种情况,但我还没有测试过。应该是这样的:

mysql_connect(...); 
if(pcntl_fork()) 
  posix_kill ( posix_getpid() , SIGKILL);
  exit(); // won't hurt to leave it here

mysql_query( ... ); //no mysql connection here 

或者如果父母启动了许多孩子并且他们在退出时关闭了与数据库的连接,您可以对孩子使用相同的方法。

【讨论】:

以上是关于是否可以防止zend引擎释放资源?的主要内容,如果未能解决你的问题,请参考以下文章

资源类型

PHP新的垃圾回收机制:Zend GC详解

PHP Zend 引擎扩展和静态方法

Zend 搜索引擎,需要一些正确方向的指导

Zend 引擎如何编译 php 代码或 php 编译器如何工作?

如何防止 Laravel 应用程序文件夹被搜索引擎索引