ホームページ >バックエンド開発 >PHPチュートリアル >Ubuntu サーバー 11.04 は memcache をインストールし、php は memcache を使用してセッションを保存します、11.04memcache_PHP チュートリアル

Ubuntu サーバー 11.04 は memcache をインストールし、php は memcache を使用してセッションを保存します、11.04memcache_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:50:54762ブラウズ

Ubuntu サーバー 11.04 は memcache をインストールし、PHP は memcache を使用してセッションを保存します 11.04memcache

この記事では、Ubuntu サーバー 11.04 が memcache をインストールし、PHP が memcache を使用してセッションを保存する例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

1. まず memcache サーバーをインストールします:

リーリー

インストールが完了すると、システムは自動的に memcached サービスを開始し、ポート 11211 を占有します

ポート 11211 のサービスを再構成する必要がある場合は、有効になっている memcached サービスを閉じる必要があります

手動開始:

リーリー

ここで、memcached サービスの起動パラメータについて説明する必要があります:

-p リスニングポート
-l 接続の IP アドレス。デフォルトはローカルマシンです
-d start は memcached サービスを開始します
-d restart memcached サービスを再起動します
-d stop|shutdown 実行中の memcached サービスをシャットダウンします
-d install memcached サービスをインストールします
-d アンインストール memcached サービスをアンインストールします
-u として実行 (root として実行する場合のみ有効)
-m 最大メモリ使用量 (MB 単位)。デフォルトは64MB
-M メモリが枯渇した場合、項目を削除する代わりにエラーを返します
-c 同時接続の最大数、デフォルトは 1024 です
-f ブロック サイズ増加係数、デフォルトは 1.25-n の最小割り当てスペース、キー + 値 + フラグのデフォルトは 48
-h ヘルプを表示します

2. PHP Memecache クライアントをインストールします

リーリー

Webサーバーを再起動します

memcache コードのテスト:

リーリー

memcacheを使用してセッションを保存します

通常、セッションはテキストファイルの形式でサーバー側に保存されます。 Seesion が使用されている場合、または PHP ファイルが Session 変数を呼び出したい場合は、session_start() 関数を使用して、Session を呼び出す前に Seesion を開始する必要があります。他に何も設定する必要はありません。PHP が自動的にセッション ファイルの作成を完了します。デフォルトのセッション ストレージ パスは、サーバーのシステム一時フォルダーです。

しかし、大量のデータを含むセッションが発生した場合、ファイルベースのセッション アクセスを使用する際のボトルネックは、ディスク IO 操作である可能性があります。現在では、Memcached を使用してセッション データをメモリ経由で直接保存するため、効率が大幅に向上します。 。 読み取りと書き込みの速度はファイルよりもはるかに速く、複数のサーバーがセッションを共有する必要がある場合は、これらのサーバーが同じ memcached サーバーのグループを使用するように構成するだけで、追加の作業負荷が軽減されます。

欠点は、マシンがダウンするとセッション データがメモリに保存されることです。ただし、セッション データにとっては深刻な問題ではありません。

memcached を使用してセッションを保存するにはどうすればよいですか?基本的な設定手順は次のとおりです:

1. memcached をインストールします (よくわからない場合はスキップして、前の記事を確認してください: http://www.bkjia.com/article/85510.htm)
phpinfo 出力の「登録された保存ハンドラー」に「files user sqlite」が表示されます。

2. 設定ファイルを変更します。

①.php.iniでグローバルに設定(※サーバーの再起動が必要)

リーリー

②. または、特定のディレクトリ内の.htaccess:

リーリー

③ アプリケーションでも使用できます:

ini_set("session.save_handler", "memcache");

ini_set("session.save_path", "tcp://127.0.0.1:11211");

注: 複数の memcached サーバーを使用する場合は、それらをカンマ「,」で区切ります。Memcache::addServer() ドキュメントで説明されているように、追加パラメーター「persistent」、「weight」、「timeout」、および「retry_interval」を取ることができます。 " "待って、次のようなもの:

"tcp://host:port?persistent=1&weight=2,tcp://host2:port2" 。

3. memcached を開始します


コードをコピーします コードは次のとおりです: memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

4. セッションを作成するテスト

リーリー

5. memcached でクエリを実行するには sessionid を使用します

リーリー

コードをコピーします コードは次のとおりです: [root@localhost html]# /usr/local/webserver/php/bin/php -f get_session.php 出力結果:

string(16) "admin|s:3:"wan";"

セッションが適切に機能していることを証明します。

もう一度詳しく説明します: マルチドメイン Web サイトは MEMCACHE メソッドを使用して SESSION データを共有します

SESSION の仕組みを理解すると、デフォルトで各サーバーが同じクライアントの SESSION ID を生成することがわかります。たとえば、同じユーザー ブラウザの場合、サーバー A によって生成される SESSION ID は 30de1e9de3192ba6ce2992d27a1b6a0a ですが、サーバー B は何です。生成されるのは c72665af28a8b14c0fe11afe3b59b51b です。また、PHP の SESSION データは、このサーバーのファイル システムに別途保存されます。

問題を特定したら、解決を開始できます。 SESSION データを共有したい場合は、2 つの目標を達成する必要があります。1 つは、同じクライアントに対して各サーバーによって生成された SESSION ID が同じである必要があり、同じ COOKIE を介して渡せることです。つまり、各サーバーは次のことを行うことができなければなりません。もう 1 つは、SESSION データの保存方法と場所が各サーバーにアクセスできるようにする必要があることです。簡単に言えば、複数のサーバーはクライアントの SESSION ID を共有し、サーバーの SESSION データも共有する必要があります。

第一个目标的实现其实很简单,只需要对 COOKIE 的域(domain)进行特殊地设置即可,默认情况下,COOKIE 的域是当前服务器的域名/IP 地址,而域不同的话,各个服务器所设置的 COOKIE 是不能相互访问的,如 www.aaa.com 的服务器是不能读写 www.bbb.com 服务器设置的 COOKIE 的。这里我们所说的同一网站的服务器有其特殊性,那就是他们同属于同一个一级域,如:tieba.xiaoyuan.com 和 www.xiaoyuan.com 都属于域 .xiaoyuan.com,那么我们就可以设置 COOKIE 的域为 .xiaoyuan.com,这样 tieba.xiaoyuan.com、www.xiaoyuan.com 等等都可以访问此 COOKIE。PHP 代码中的设置方法如下:

<&#63;php
ini_set('session.cookie_domain', 'xiaoyuan.com');
&#63;>

这样各个服务器共享同一客户端 SESSION ID 的目的就达到了。

于是 可以在 a.domain.com 下

session.php

<&#63;php
ini_set('session.cookie_domain', 'domain.com');
session_start();
if (!isset($_SESSION['admin'])) {
  $_SESSION['admin'] = 'wan';
}
print $_SESSION['admin'];
print "\n";
print session_id();

在b.domain.com下

session2.php

<&#63;php
ini_set('session.cookie_domain', 'domain.com');
session_start();
echo $_SESSION['admin'];

希望本文所述对大家Ubuntu平台上的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1133039.htmlTechArticleUbuntu server 11.04安装memcache及php使用memcache来存储session的方法,11.04memcache 本文实例讲述了Ubuntu server 11.04安装memcache及php使用memcache来存储se...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。