【发布时间】:2011-03-25 14:24:08
【问题描述】:
是否可以防止zend引擎释放PHP中分配的资源?
例如,当一个进程被 forked() 并且资源被复制到子进程时,当子进程或父进程退出时,资源是空闲的,因此其他进程无法再访问它们。
【问题讨论】:
-
还是没有自动释放资源?
标签: php resources php-internals
是否可以防止zend引擎释放PHP中分配的资源?
例如,当一个进程被 forked() 并且资源被复制到子进程时,当子进程或父进程退出时,资源是空闲的,因此其他进程无法再访问它们。
【问题讨论】:
标签: php resources php-internals
释放资源不是问题,因为父母和孩子无法访问彼此的资源。也许你在谈论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
或者如果父母启动了许多孩子并且他们在退出时关闭了与数据库的连接,您可以对孩子使用相同的方法。
【讨论】: