私はphp/mysqlを学んでいます。いくつかの質問に対する決定的な答えが見つからないようです..それらのいくつかを明確にするか、信頼できる情報源を教えてもらえますか. ありがとう。
(1)データベースオブジェクトがもう必要ない場合、オブジェクトの設定を解除すると、関連するすべてのリソース(接続/結果を保持するメモリなど)が解放されますか、または呼び出す前に$mysqliResult->free()
and/orを呼び出す必要がありますか。$mysqliObj->close()
unset($mysqliObj)
(2) また、抽象化クラスのメンバーが mysqli オブジェクトを保持するデータベース抽象化レイヤーを使用している場合、設定を解除し$dbAbstractionObj
て他のスクリプト呼び出しのために mysql 接続を解放するか$this->mysqli->close()
、データベース抽象化クラスのデストラクタ内で呼び出す必要があります.. PHP がスクリプト実行の最後にすべてをクリーンアップすることは知っていますが、大量のデータがフェッチされて処理されるスクリプトの実行中にそれらを行う利点があるかどうかを知りたいです...言おうとしている:
(1)
$mysqli = new Mysqli($host, $user, $pass, $database);
$result = $mysqli->query('...');
$data = $result->fetch_all(MYSQLI_ASSOC);
/* Now if i don't need $mysqli any futher but would be doing
other stuff on $data that might take a while, do I just */
unset($mysqli)
/* OR */
$result->free();
$mysqli->kill($mysqli->thread_id);
$mysqli->close();
unset($mysqli);
?>
(2)
<?php
class Database {
private $mysqli;
public function __construct(array $config) {
if (!$this->mysqli = new mysqli($config['host'], $config['user'], $config['pass'], $config['database'])) {
throw new Exception("Couldn't connect to database");
}
}
/* do i need a destructor to close the connection when i unset the
Database object... like */
public function __destruct() {
$this->mysqli->kill($this->mysqli->thread_id);
$this->mysqli->close();
}
/* other methods for select, update, insert, delete */
}
?>