ホームページ バックエンド開発 PHPチュートリアル php memcache と php memcached および発生した問題

php memcache と php memcached および発生した問題

Nov 29, 2016 am 10:30 AM

PHP には、php memcache と php memcached の 2 つの memcache クライアントがあります。
php memcache は PHP で独立して実装されています。私たちの実践から、多くの問題があり、設定できる関数や属性もほとんどないことがわかりました。ネイティブ C ではより完全なため、php memcached に置き換えることをお勧めします。

1. Php memcacheの問題

1.1 配布の問題
php memcacheはデフォルトでインスタンスを自動的に切り替えるため、古いデータが取得され、値が不安定になることがあります。
ネチズンからの質問:
最近、ある製品の作業中に小さな問題に遭遇しました。その現象は 2 つの分散型 memcached サーバーを使用していました。場合によっては、特定のカウンターによって取得された数値が正しくなく、最終的には php memcache クライアントのフェイルオーバー メカニズム上で特定されることがあります。
memcached 分散環境では、ハッシュ計算を通じて特定のキーが特定の memcached に割り当てられることがわかっています。
php.ini で memcache.allow_failover = 1 の場合、分散環境では、1 つの memcached に問題があると、自動的に他の memcached が試行され、上記の問題が発生します。したがって、allow_failover = 0 を設定する必要があります。そうすることで、取得できない場合は、他の MCS から取得するのではなく、直接失敗を返すようになります。これにより、頻繁に切り替える場合に、ネットワーク例外やサーバー側の例外が発生した場合に古いデータを取得することを回避できます。インスタンスを削除すると、古いデータが取得されます。

1.2 同時実行性が高い場合の安定性の問題

Sina Weibo で言及された教訓:
php memcache を php memcached に置き換えると、同時実行性が高い場合の安定性が大幅に向上します
さらに、より多くの機能とより正確なエラーコードが追加されています。

Twitter のキャッシュ エクスペリエンス

マルチレベル キャッシュ。一部のキャッシュ ノードがダウンした場合の影響を軽減し、読み取りと書き込みの両方をキャッシュします。
memcached API を libmemcached に置き換えます (memcached への多言語アクセスに便利で、次のようなさまざまなルールを許可します)。 )

1.3 1 秒のタイムアウト間隔は変更できません

php memcache クライアントには 1 秒のタイムアウト間隔があり、変更できません:
bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )
3 番目のパラメーターは元々タイムアウトを秒単位で設定できますが、変更することはできません。
タイムアウトを変更する次の 3 つの方法はテストされていますが、すべて無効です:
1.3.1. Memcache API Memcache::setServerParams は変更できません。
1.3.2. memcache ソース コードの変更 vi php_memcache.h マクロ定義は変更できません。
1.3.3 . php.ini のこの設定:default_socket_timeout = 60 は、このタイムアウトでは無効です。

2. memcache と memcached の比較

古いクライアントである Php memcache には、プロパティ設定がほとんどありません。
エラーコードの粒度が非常に粗いため、いくつかの機能が欠けています。
主に 2 人の顧客の PHP に使用されます。 1 つは古い、より広範な PECL/キャッシュであり、もう 1 つは新しい、めったに使用されない、より機能が豊富な PECL/キャッシュです。

基本、値の設定、値の取得、増分、減分、データの取得などの複数のサーバーをサポートします。

ここでは、さらに高度な機能と情報をいくつか紹介します。

りー

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP状況調査の発表

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles