zend engineがPHPで割り当てられたリソースを解放するのを防ぐことは可能ですか?
たとえば、プロセスがforked()され、リソースが子プロセスに複製された場合、子プロセスまたは親プロセスのいずれかが終了すると、リソースは解放されるため、他のプロセスはそれらにアクセスできなくなります。
zend engineがPHPで割り当てられたリソースを解放するのを防ぐことは可能ですか?
たとえば、プロセスがforked()され、リソースが子プロセスに複製された場合、子プロセスまたは親プロセスのいずれかが終了すると、リソースは解放されるため、他のプロセスはそれらにアクセスできなくなります。
親と子は互いのリソースにアクセスできないため、リソースの解放は問題ではありません。多分あなたは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
または、親が多くの子を開始し、終了時にデータベースへの接続を閉じる場合、子に対して同じアプローチを使用できます。