• 締切済み

セッション管理について

ひとつのWebサービスを複数サーバで運用していて、 データベースでセッション管理を行うと、データベース側に 負荷がかかってしまうため、memcacheを導入しセッション管理を しようと考えております。 (携帯サイトのためCoockieは使用できません) 1. memcacheとmemcachedの違いはなんでしょうか。  memcachedのほうが性能がいい、程度にしか認識していなかったのですが..   2.現在のWebサービスはPHP4.4.4で運用しており、PHP5に移行することは  リスクを考えると難しいです。。  memcacheはphp4.3.11、memcachedはphp5以降で利用可能であると  認識しているのですが、実際可能なのでしょうか?  社内の人間に聞くと、PHP5以降からしか対応していないと  言われ、迷っております。(また、対応バージョンについての文書も見つかりません。。)    テスト環境(php4.4.4)でmemcacheを入れ、PHPのmemcache関数を  使用したところ、通常にセッションの管理がされている気が  したのですが、複数サーバでロードバランスされているテスト環境が  なく、Webサーバが複数台ある場合の確認はできません。  実際、可能なのでしょうか。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

memcacheとmemcachedに関して、知らなかったのですが、ざっと調べてみた感じ、 http://dozo.matrix.jp/pear/index.php/PECL/memcache.html 「PHPに限ったことではありませんが、 memcachedを使えばすべてのWEBアプリ用言語で静的インスタンス(static instance)が使えます。」 となっており、言語を指定しないモジュールのようです。 そして、それをPHPから利用可能にする為に、PECL::memcacheが存在している、ということのようです。 ですので、memcacheはmemcachedがインストールされていなければ使うことが出来ないことを考えれば、php4.3.11以降で使用可能なのではないかなと思います。 ただ、社内の方が、「PHP5以降からしか対応していない」といっていることを考えると、もしかしたら「PHP4では使い物にならない」という意味で言っているという可能性もありますね。

myaa_myu
質問者

お礼

ご回答いただきありがとうございます! わざわざお調べいただきましてありがとうございます。 memcacheについてあまり分からず、使えないものかと ご質問してしまった次第です。。 PHP4.3.11でも可能…ただしもしかしたらPHP4では使い物にならないという 意味かもしれない…たしかにありえるかと思います…。 ちなみに、PHP4.3.11以降に対応していると認識していたのは 下記文書を見たためでした。。。 http://pecl.php.net/bugs/bug.php?id=11953 ありがとうございます!

関連するQ&A

  • セッション管理について

    web開発をしております。 セッションのことについて質問です。 例えば、 javaのspringではアノテーションでセッションを管理できたりしますが、セッションタイムタアウトの時間はapacheで設定できたりします。 セッションというのは、プログラム言語とサーバーのどちらで管理しているのでしょうか

    • ベストアンサー
    • Java
  • セッションについて

    セッションの管理について疑問があって質問させていただきます。 PHPの単一サーバでのセッション管理であれば、$_SESSIONを利用すれば良いと理解しています。 例えば複数のサーバで運用する場合はクッキーを利用するという方向で良いでしょうか?$_SESSIONだとセッションの引き渡しはできないですよね。(?) ただし、お金があってロードバランサーを使った場合はできると理解しています。 複数のサーバで運用する場合、会員登録の機能ではDBと連携して 入力画面でクッキーを発行 setcookie("regist","hogehoge","有効期限を設定"); 確認画面 Cookieの値をDBと通信して確認 登録完了の画面で Cookieの値をDBと通信して確認 会員登録がうまくいっていれば setcookie("regist","","有効期限を巻き戻し"); として重複登録を防ぐ。 こんな感じで良いでしょうか。 間違い、誤解があれば教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでセッション管理

    PHPでセッション管理の勉強をしています、 テストに以下の文章があるのですが カウント2回です は表示するのですが 3回目以降も カウント2回です と表示します。 文章がどこかおかしいでしょうか? また、このセッション管理は携帯電話でも有効なのでしょうか? スミマセン、教えてください。 バージョンは MYSQL ver4.0.26 PHP ver4.2.2 です <?php session_start(); $count = 1; if (isset($_SESSION["count"])) { $count = $_SESSION["count"]; $count++; } $_SESSION["count"] = $count; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>セッション変数のテスト</title> </head> <body> セッション変数のテスト<BR> <BR> <?php if ($count == 1) { ?> はじめての訪問です。<BR> <BR> セッション変数にデータがありません。<BR> このページをリロードしてください。<BR> <?php } else { ?> あなたの訪問は<?=$count?>回目です。<BR> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • session_start出来ません。

    FreeBSD 4.11 Apache 1.3.33 PHP 4.3.11 の組合せでWebサーバをセットアップし、phpファイルにアクセスしたところ Fatal error: Call to undefined function: session_start() in /hogehoge/test.php on line 3 となってしまいます。 session.save_pathにはパーミッションを777にしていますが、session_startが出来ません。 どのように対応したらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのセッションについて

    XAMPPのローカル環境でphpのプログラムを組んだのですが、いざ実際のサーバーにアップロード してもうまく動きませんん。 調べた結果セッションがちゃんと動いていないという結論に達しました。 単純なセッションなのですが、ローカル環境ですとちゃんと動くのが、サーバーにアップすると $_SESSION['sa']が空っぽの状態となります。 サーバーにアップロードしたindex.phpの中にecho $_SESSION['sa'];と書き込むと 「あいうえお」とちゃんと表示されますのでセッションには格納されているようなのですが 値をきちんとセッションで持ち越せないようです・・。 ローカルでは下記のファイルはちゃんと持ち越せていて、実際のサーバーではダメな理由がまったくわかりません。 何か特別な設定が必要なのでしょうか?何時間もググっていますがそういった設定が必要と いう記述は見当たらないのですが・・。 サーバーはさくらサーバーでバージョンはPHP 5.4.22となっています。 ------------------------------------------------------------ ファイル名 index.php <?php session_start(); $data="あいうえお" $_SESSION['sa']=$data; ?> <a href="aaa.php">aaa.phpへのリンク</a> ------------------------------------------------ ファイル名aaa.php ------------------------------------------------ <?php session_start(); $sss = $_SESSION['sa']; echo $sss ; ?> ------------------------------------------------

    • ベストアンサー
    • PHP
  • WebサーバとWebアプリケーション。セッションID、ユーザーID、パスワードを管理するのはどっち?

    セッションIDを習ったとき、 私の記憶ではセッションIDを管理するのはWebサーバと習いました。 普通、このOKWaveのようにログインを要するようなWebページは ログイン時に渡されたユーザーIDとパスワードを セッションIDに紐付ける形でサーバ側で管理することによって、 このセッションIDを通して、同一ユーザーと見なすということだったと思います。 しかし、ここでひとつ疑問が出ました。 ログイン時に、「自分は誰か、正しいユーザーか」ということを通信先に教えるために ユーザーIDとパスワードを入れますよね? でもここでユーザーIDとパスワードがほしいのはWebサーバではなく、 ユーザー情報を持っているWebアプリケーションではないのか?と考えました。 しかし、私はセッションIDはWebサーバが管理すると習ったように記憶しています。 ということは、 ・セッションIDはWebサーバが管理する ・ユーザーIDとパスワードはWebアプリケーションが管理する ということでいいのでしょうか? つまり、セッションIDとユーザーIDの対応表はWebアプリケーション側で実装し、 クライアントのリクエストから呼び出されるWebアプリケーションのプログラムは 「この呼び出した相手のセッションIDを教えてください」と Webサーバに聞くようなプログラムにしなければならないという認識で合っているのでしょうか? よく分かってないので、聞きたいことが非常に伝わりにくいかと思いますが、 よろしくお願いします。 長い上、お粗末な文章を最後まで読んでいただきありがとうございました

  • セッションについて

    PHPのセッションについてご教授ください。 session_start()の前でセッション名の変更を行うと、セッションidが受け渡されず、次ページが新規セッションとなってしまいます。クッキーを使った解決法を探してます。 セッション名を変更した場合、どのように解決すればよいでしょうか。初心者なのですが、一生懸命勉強中なので、宜しくお願いします。 開発環境: apache2.2 php 5.2 ページ1ソース <?php function main(){ session_name('member'); <= この行をコメントアウトすると、受け渡しできます session_start(); $_SESSION['test'] = 'test'; } main(); ?> <a href="sesstest2.php">test</a> ページ2ソース <?php session_start(); echo $_SESSION['test']; ?>

    • ベストアンサー
    • PHP
  • header(Location:~)で$_SESSION[" "]が保持されない。

    自宅サーバー(apache2+php5+mysql5)のlocalhost環境で、 header(Lcation:~)の記述をすると、 セッションが保持されない現象が起きています。 本番環境のレンタルサーバーは、同じ記述で、 しっかりとセッションが保持されます。 この原因は、何でしょうか? php.iniの設定など、何か考えられることがあれば、 是非教えて下さい。 【やりたいこと】 ■a.php **************************************** <?php echo<<<EOD <form method="POST" action="./b.php"> <INPUT type="text" name="test"> <INPUT type="submit" name="Submit" value="確認画面へ"> </form> EOD; ?> ■b.php **************************************** <?php $_SESSION["test"]=$_POST["test"]; header("Location:./c.php"); ?> ■c.php **************************************** <?php echo $_SESSION["test"]; ?> 自宅サーバーだと、 a.phpで入れたデータが、c.phpで表示されません。 レンタルサーバーだと、 セッションが保持され、表示されます。

    • ベストアンサー
    • PHP
  • hiddenによるセッション管理について。

    hiddenによるセッション管理について。 セッション管理にクッキー利用、URLライティング、hiddenによる3つの方法があると聞きました。 今まではクッキー利用によるセッション管理だったのですが、使えない場合も出てくることを考えて他の方法を試してみようと思いました。 質問1. URLライティングはリンクによる実行時のみ有効という認識でよいのでしょうか。submitによる実行はクッキーまたはhiddenによる方法しか使えないと考えてよいのでしょうか。 質問2. 下記のようにセッションIDをhiddenでサーバに送信しようとしたのですが、サーバ側でも何か処理が必要なのでしょうか。 <input type="hidden" name="jsessionid" value="<%=session.getId()%>" /> 想定ではクッキーの場合と同じくサーバ側でよろしくやってくれるのかと思ったのですが、実際に実行してみるとうまくセッションが引き継がれません。 そこでサイトを探していたところ下記のような記述を見つけました。 「HttpSessionとは異なり、HIDDENパラメータの埋め込みやパラメータの解析などの処理を、開発者が実装する必要があります。」 「HIDDENパラメータの埋め込み」というのは上記の記述になると思うのですが、パラメータの解析というのをサーバ側のプログラム(strutsを利用していますので、アクションやサーブレット?)で何か処理が必要なのでしょうか。 いまはクッキー利用と同じく下記のようにしてしまっていますが、たぶんこの記述を何かに変えないといけないのかなと思っています。 HttpSession session = req.getSession(); hiddenによる実際のサンプルコードをいま探しているところなのですが、いまのところ見つかっていません。 もしよろしければアドバイスをいただけると助かります。

    • ベストアンサー
    • Java
  • セッション管理は必要なのでしょうか?

    iアプリとDBサーバを利用した情報管理システムを考えています。DBはPostgreSQLの予定です。 サーバ側のプログラムはPerlを使って作るつもりです。 iアプリはHTTP通信を行うので、Apacheを立ててCGIでデータベース連携しようと思うのですが、セッション管理ということをしないといけないのか、しなくても良いのかというのが良く分かりません。 具体的には、一日の作業日報をアプリからサーバに送信したり、DB上のデータをダウンロードしたりするくらいのシステムです。 セッション管理は、どのような場合にどのような方法で行うべきものなのでしょうか? またどのような意味があるのでしょうか? かなり初心者レベルのあいまいな質問ですが、アドバイスいただけると助かります。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう