目次
公式説明" >公式説明
実際のテスト" >実際のテスト
mysqli test" >mysqli test
まとめ" >まとめ
ホームページ バックエンド開発 PHPの問題 PHPでPDOとの接続を閉じる方法

PHPでPDOとの接続を閉じる方法

Jun 21, 2021 pm 03:09 PM
php

この記事では、PHP で PDO との接続を閉じる方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles