0

私はオンラインで探していましたが、出くわしたすべての記事は少し違うことを言っているようです。結果セットを操作していて、結果をリリースする前にプログラムが終了した場合、正確には何が起こりますか?

それが常に起こることを確実にするためのより良い方法はありますか?データベース接続についても同じことが言えます。

    if($statement->fetch()) {
        exit("Result!");
    }

    $statement->free_result();
4

2 に答える 2

1

free_result、データベースエンジンに結果セットを解放できることを通知します。

大きな結果セットを返すクエリに使用されているメモリの量が心配な場合にのみ呼び出す必要があります。関連するすべての結果メモリは、スクリプトの実行の最後に自動的に解放されます。

register_shutdown_function結果がメモリから解放されていることを確認するために使用できます

function shutdown(){
    global $statement;
    if($statement){
        $statement->free_result();
    }
}

register_shutdown_function('shutdown');
于 2012-08-31T07:24:19.933 に答える
0

PHPで使用register_shutdown_functionして、関数/多くの関数が終了時に起動することを確認できます。この例では、ifステートメントを次のように変更することもできます。

$exitResult = null;
if($statement->fetch()) {
    $exitResult = "Result!";
}

$statement->free_result();
if ($exitResult !== null) exit($exitResult);

ただし、ほとんどのプラグイン/拡張機能(データベースなどに接続する)は、PHPプロセスのシャットダウン後(スクリプトの最後)にクリーンアップされることに注意してください。

これをクラスで使用する場合は、への参照を保存してから、クラスで関数を$statement使用できます。__destruct

于 2012-08-31T07:22:29.227 に答える