[PHP-users 10179] Re: リソース変数の開放のタイミング

桝形 誠二 php-users@php.gr.jp
Wed, 18 Sep 2002 11:19:18 +0900


こんにちわ、桝形です。

返答が遅くなりましてどうもすみません。
また、返答して頂きありがとうございます。

> リソースが削除されるのは参照数が0になった時、またはスクリプトが
> 終了しリソースが必要なくなった時です。

という事は( 適当な例ですみません )、

<?
$Connect = mysql_connect( ... ); // refcount = 1
$Result  = mysql_db_query( ... ); // refcount = 2
mysql_free_result( $Result ); // refcount = 1
// 上記処理では結果領域は実際には開放されない。
mysql_close( $Connect );  // refcount = 0
// 上記処理で結果領域の開放とmysql_closeが行われる。
?>

と、いう事になる。。。と解釈しました。
間違っていたら指摘して下さい。

間違っていたとしたら、リソースはそれぞれ独立して
参照しているのでしょうか?

また、参照数が0になった時に削除されるとなると専用の
関数ではなく、unset関数等で削除しようとしても同様の
事になるのでしょうか?

これも間違っていたら指摘して下さい。

> 明示的にリソースを解放しない場合はHTTPコネクション切断後、つまり
> リクエストシャットダウン時に解放されます。
> 明示的にリソースを解放した場合、HTTPコネクションがある状態、つま
> りユーザーにページを送っている最中にリソースを解放する事になります。
> 
> このため、PHPプログラミング(とくにWebプログラミング)ではリソース
> は明示的に解放しない方が良いです。例外は、多くのメモリなどを消費する
> 場合で、スクリプト実行中に解放した方が良い場合などです。

なるほど〜。
ここは非常に今後の参考になります、どうもありがとうございます。
_______________________

  桝形 誠二( Masugata Seiji )
  E-Mail : s.masugata@digicom.dnp.co.jp

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄