この記事では、PHP で PDO との接続を閉じる方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
以前 mysql 接続操作を手動で作成したときは、通常、mysql_close() を使用してデータベース接続を閉じました。ただし、最新の開発では、フレームワークの一般的な使用により、基礎となるカプセル化が無視され、ほとんどのフレームワークはデフォルトでデータベース操作に PDO を使用するようになりました。
公式説明
接続を閉じるには、オブジェクトを破棄して、そのオブジェクトへの残りの参照がすべて削除されるようにする必要があります。オブジェクト変数。これを明示的に行わないと、PHP はスクリプトの最後で接続を自動的に閉じます。
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $pdo = null;
公式ドキュメントでは、PDO オブジェクトに NULL を割り当てるだけであることが非常に明確に記載されています。しかし、物事は本当にそんなに単純なのでしょうか?
実際のテスト
このようなテストを行ってみましょう。通常の状況では、データベース接続を開いた後すぐに閉じることはありませんが、いくつかの操作を実行する必要があります。 。
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $pdo = null; sleep(60);
上記のコードを実行した後、データベースで show full processlist を使用して接続プロセスを表示すると、現在の接続はすぐには閉じられず、60 秒後まで閉じられないことがわかります。つまり、ページの実行が完了した後です。 $pdo = null; が正常に実行されなかったようです。
実はこの状況は公式文書で説明されていますが、人々は注目しないかもしれません。 [オブジェクトへの残りの参照がすべて削除されるようにするには、オブジェクトを破棄する必要があります。] 上記のコードでは、\$stmt プリコンパイル済み SQL ステートメント関数が $pdo オブジェクト内のメソッドを呼び出し、それらの間に参照依存関係を作成します。この場合、$pdo = null; を直接指定しても効果がないため、$stmt にも null を割り当てる必要があります。
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $stmt = null; $pdo = null; sleep(60);
mysqli test
mysqli のデフォルトの拡張コンポーネントを使用するとき、つまり、mysqli オブジェクトで close() を使用してデータベース接続?または、コードを使用して直接テストします。 (mysql 拡張機能は古いため、推奨されません。データベース操作クラスを自分でカプセル化する場合、または小さなデモを作成する場合は、mysqli を使用することをお勧めします)
$conn = new mysqli('127.0.0.1', 'root', '', 'blog_test'); $result = $conn->query('SELECT * FROM zyblog_test_user'); $stmt = $conn->prepare("SELECT * FROM zyblog_test_user"); $stmt->execute(); $conn->close(); sleep(60);
上記のコードを実行した後、データベース内の接続 プロセスは、まだ実行中の接続を認識しません。つまり、mysqli で close() メソッドを呼び出すと、データベース接続をすぐに直接閉じることができます。
まとめ
実は今日の内容は、データベース接続に関する公式ドキュメントのNoteに記載されていた情報でもあります。あるマスターがこの問題をずっと前に発見して共有しましたが、ほとんどの人はこの問題をまったく知りませんし、PDO がデータベース接続を閉じることができることさえ知りません。フレームワークは私たちに利便性をもたらしますが、多くの事柄を非常にうまくカプセル化しているため、多くの友人はその基礎となる内容を気にしません。しかし、より高いレベルに移行すると、これらの基礎となる事柄が邪魔になることがよくあります。
テスト コード:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202008/source/PHP%E4%B8%ADPDO%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E7%9A%84%E9%97%AE%E9%A2%98.php
推奨学習: php ビデオ チュートリアル
以上がPHPでPDOとの接続を閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









