Можно ли запретить Zend Engine освободить ресурсы? - PullRequest
0 голосов
/ 05 августа 2010

Можно ли запретить Zend Engine освобождать ресурсы, выделенные в PHP?

Например, когда процесс разветвляется () и ресурс дублируется на дочерний процесс, когда дочерний процесс или родительский процесс завершаются, ресурс свободен, поэтому другие процессы больше не могут к ним обращаться.

1 Ответ

0 голосов
/ 30 марта 2011

Освобождение ресурсов не является проблемой, потому что родитель и ребенок не имеют доступа к ресурсам друг друга. Может быть, вы говорите о подключении 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 

Или, если родитель запускает много детей и закрывает соединение с базой данных при выходе, вы можете использовать тот же подход для детей.

...