ホームページ php教程 php手册 PHP扩展模块memcached长连接使用方法分析

PHP扩展模块memcached长连接使用方法分析

Jun 06, 2016 pm 08:15 PM
memcached 長い接続

这篇文章主要介绍了PHP扩展模块memcached长连接使用方法分析,需要的朋友可以参考下

      网上广泛流传着一篇文章,讲述php的两个扩展模块memcache和memcached的区别,,其中特意强调了memcached与memcached一个很大的区别是memcached模块不支持长连接。以至于后来很多年我都认为memcached是不支持长连接的,其实不然,memcached扩展模块从很早的版本开始就已经支持长连接了。从扩展模块的源码注视中我们就能看到:

/* {{{ Memcached::__construct([string persistent_id[, callback on_new[, string connection_str]]]))

   Creates a Memcached object, optionally using persistent memcache connection */

static PHP_METHOD(Memcached, __construct)

{

从php的手册身上我们可以看到memcached的扩展模块提供的构造函数提供一个参数persistent_id可选项,手册中这样介绍:

      默认情况下,Memcached实例在请求结束后会被销毁。但可以在创建时通过persistent_id为每个实例指定唯一的ID, 在请求间共享实例。所有通过相同的persistent_id值创建的实例共享同一个连接。 

这个参数的含义就是说如果你传递了一个命名id给到构造方法,那么就会建立长连接,通常我们使用的都是PHP-FPM模式,这样PHP-FPM进程就会和memcached服务简历一条长连接通道。我们也可以理解为persistent_id就是一个连接池名字,所有php-fpm进程都是这个连接池中的一员。

     但我们需要注意的是php是解释性语言,当php第一次通过memached模块建立起长连接后,切记后续的php执行就不要再通过memcached的构造函数构建相同persistent_id命名的长连接,可以建立不同persistent_id名字的长连接,如果是相同的名字被php重复执行,一定会导致php-fpm的进程异常导致与memcached的通信越来越慢,同时根据libmemcached的版本不同还会导致php产生coredump。

    那么我们如何避免单个php-fpm在建立完以persistent_id命名的长连接后不再重复建立长连接呢?其实在PHP带有评注的手册上是有讲解的,内容如下:

When using persistent connections, it is important to not re-add servers.

This is what you do not want to do:

$mc = new Memcached('mc'); $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); $mc->addServers(array( array('mc1.example.com',11211), array('mc2.example.com',11211), ));


Every time the page is loaded those servers will be appended to the list resulting in many simultaneous open connections to the same server. The addServer/addServers functions to not check for existing references to the specified servers.

A better approach is something like:

$mc = new Memcached('mc'); $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); if (!count($mc->getServerList())) { $mc->addServers(array( array('mc1.example.com',11211), array('mc2.example.com',11211), )); }

通过使用getServerList()方法来检查当前执行使用的php-fpm进程容器中是否已经存在相同名字的长连接资源,如果存在就不要重复使用addServers() 方法来新增长连接配置。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Memcached キャッシュ テクノロジにより、PHP でのセッション処理が最適化されます。 Memcached キャッシュ テクノロジにより、PHP でのセッション処理が最適化されます。 May 16, 2023 am 08:41 AM

Memcached は、Web アプリケーションのパフォーマンスを大幅に向上させる、一般的に使用されるキャッシュ テクノロジです。 PHP で一般的に使用されるセッション処理方法は、サーバーのハードディスクにセッション ファイルを保存することです。ただし、サーバーのハードディスクがパフォーマンスのボトルネックの 1 つになるため、この方法は最適ではありません。 Memcached キャッシュ テクノロジを使用すると、PHP でのセッション処理を最適化し、Web アプリケーションのパフォーマンスを向上させることができます。 PHPでのセッション

PHP8.0のキャッシュライブラリ: Memcached PHP8.0のキャッシュライブラリ: Memcached May 14, 2023 am 08:16 AM

PHP8.0 のキャッシュ ライブラリ: Memcached インターネットの急速な発展に伴い、最新のアプリケーションではパフォーマンスを向上させ、大量のデータを処理するために効率的で信頼性の高いキャッシュ テクノロジが必要です。 PHP の人気とオープン ソースの性質により、PHP キャッシュ ライブラリは Web 開発コミュニティにおいて不可欠なツールとなっています。 Memcached は、広く使用されているオープンソースの高速メモリ キャッシュ システムで、数百万の同時接続キャッシュ リクエストを処理でき、ソーシャル ネットワークやオンラインなど、さまざまな種類のアプリケーションで使用できます。

PHP と MySQL での長時間接続と永続的接続のための Swoole と Workerman の最適化メソッド PHP と MySQL での長時間接続と永続的接続のための Swoole と Workerman の最適化メソッド Oct 15, 2023 pm 12:54 PM

Swoole と Workerman の PHP と MySQL 間の長時間接続と永続的な接続のための最適化方法には、特定のコード例が必要です。Web アプリケーションの開発とユーザー規模の増加に伴い、データベース クエリはアプリケーション パフォーマンス最適化の焦点の 1 つになっています。 PHP 開発で一般的に使用されるデータベース接続方法には、長い接続と短い接続があります。長い接続とは、データベース接続を確立した後に接続状態を維持し、同じ接続を複数回再利用することを指します。一方、短い接続とは、各クエリが完了した後に接続を閉じることを意味します。 PHP では、従来の My

Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化するにはどうすればよいですか? Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化するにはどうすればよいですか? Jun 21, 2023 pm 05:07 PM

インターネットの発展に伴い、インターネット アプリケーションの分野では PHP アプリケーションがますます一般的になりました。ただし、PHP アプリケーションによる同時アクセスが多いと、サーバーの CPU 使用率が高くなり、アプリケーションのパフォーマンスに影響を与える可能性があります。 PHP アプリケーションのパフォーマンスを最適化するには、Memcached キャッシュ テクノロジが良い選択肢となっています。この記事では、Memcached キャッシュ テクノロジを使用して PHP アプリケーションの CPU 使用率を最適化する方法を紹介します。 Memcached キャッシュ テクノロジの概要 Memcached は、

PHP および Memcached データベースのバックアップとリカバリ PHP および Memcached データベースのバックアップとリカバリ May 15, 2023 pm 09:12 PM

インターネットの急速な発展に伴い、大規模な MySQL データベースのバックアップとリカバリは、大手企業や Web サイトにとって不可欠なスキルの 1 つになりました。 Memcached の普及に伴い、Memcached のバックアップと復元の方法も重要な問題となっています。 Web 開発の主要な言語の 1 つである PHP には、MySQL と Memcached のバックアップとリカバリを処理する上で独自の利点とスキルがあります。この記事では、MySQL と Memcached のバックアップとリカバリを PHP で処理する実装方法を詳しく紹介します。

PHP と Memcached によるキャッシュ管理 PHP と Memcached によるキャッシュ管理 May 23, 2023 pm 02:21 PM

ネットワーク アプリケーションの継続的な増加とデータ量の継続的な拡大に伴い、データの読み取りと書き込みの効率がアプリケーションのパフォーマンスに影響を与える重要な要素の 1 つになっています。キャッシュ技術を適用すると、この問題をうまく解決できます。 PHP アプリケーションでは、Memcached が最も一般的に使用されるキャッシュ サーバーです。 Memcached は、一般的に使用されるデータをメモリに保存し、データ検索の効率を向上させることができる高性能分散メモリ オブジェクト キャッシング システムです。この記事では、PHP と Memcached を使用したキャッシュ管理と最適化の方法を紹介します。

PHP および Memcached のパフォーマンス監視 PHP および Memcached のパフォーマンス監視 May 15, 2023 pm 09:51 PM

最新のインターネット アプリケーションが急速に開発されているため、アプリケーションの成功にはユーザー エクスペリエンスが非常に重要です。アプリケーションの高いパフォーマンスと高可用性をどのように確保するかは、開発者が解決する必要がある重要な問題の 1 つとなっています。広く使用されているプログラミング言語の 1 つである PHP のパフォーマンスの監視と最適化も非常に重要です。 Memcached は、アプリケーションのパフォーマンスとスケーラビリティの向上に役立つ、高性能の分散メモリ オブジェクト キャッシュ システムです。この記事では、PHP と Memcached を使用してパフォーマンス監視を実装する方法を紹介します。

Memcached キャッシュ テクノロジを使用して、PHP でのオーディオとビデオの再生を最適化します。 Memcached キャッシュ テクノロジを使用して、PHP でのオーディオとビデオの再生を最適化します。 May 17, 2023 pm 04:01 PM

インターネット技術の継続的な発展により、オーディオとビデオのリソースはインターネット上のコンテンツの非常に重要な形式となり、ネットワーク開発で最も広く使用されている言語の 1 つである PHP は、ビデオの分野でも常に使用されています。そしてオーディオの再生。しかし、オーディオおよびビデオ Web サイトのユーザー数が増加するにつれて、多くの Web サイトで問題が発見されました。高い同時実行条件では、PHP のオーディオおよびビデオの処理速度が大幅に低下し、時間内に再生できない、または再生が停止するなどの問題が発生します。 。この問題を解決するには、Memcached キャッシュ テクノロジーを使用する必要があります。

See all articles