2007/04/22: PHPで$_SESSIONや$_COOKIEにオブジェクトを保存する方法
あれ、できたっけ?と思ってやってみると、そのままオブジェクトを突っ込んでもダメで、色々調べたらある関数を使うとできることがわかりました。
serialize()と、unserialize()を使えばOKみたいです。
使い方は、保存するときに、
require_once "Object.php"; //ここでは別ファイルに定義したクラスが書かれているとする。
$obj = new Object(); // Objectは、自分で定義したクラス
$sdata = serialize( $obj ); //シリアライズする。
$_SESSION["OBJ"] = $sdata; //セッションに保存。
とします。
で、他のページに移ったときに、
Objectクラスをちゃんと読み込んでから、元に戻します。
require_once "Object.php";//ちゃんとクラスの定義を読み込む
$sdata = $_SESSION["OBJ"];
$obj = unserialize( $sdata );
これは便利ですね。
詳しくはこちら。
http://php.plus-server.net/language.oop.serialization.html
serialize()と、unserialize()を使えばOKみたいです。
使い方は、保存するときに、
require_once "Object.php"; //ここでは別ファイルに定義したクラスが書かれているとする。
$obj = new Object(); // Objectは、自分で定義したクラス
$sdata = serialize( $obj ); //シリアライズする。
$_SESSION["OBJ"] = $sdata; //セッションに保存。
とします。
で、他のページに移ったときに、
Objectクラスをちゃんと読み込んでから、元に戻します。
require_once "Object.php";//ちゃんとクラスの定義を読み込む
$sdata = $_SESSION["OBJ"];
$obj = unserialize( $sdata );
これは便利ですね。
詳しくはこちら。
http://php.plus-server.net/language.oop.serialization.html
PHPやCGIが動いているウェブサイトで、このエラーが起きたときの対処法ですが、Telnetで動いているプロセスをチェックして、サーバに高い負荷を与えているプロセスを強制終了すると良いということが分かりました。
Telnetで、
ps -ux
と打って、出てきた処理の中でCPU負荷の高いものを強制終了させる。
kill 番号1 番号2 番号3
これでOK。
詳しくはサクラインターネットのページをご覧ください。
http://support.sakura.ad.jp/support/web/manual/trouble/web503.html
http://support.sakura.ad.jp/support/web/manual/tech/telnet/telnet04.html
Telnetで、
ps -ux
と打って、出てきた処理の中でCPU負荷の高いものを強制終了させる。
kill 番号1 番号2 番号3
これでOK。
詳しくはサクラインターネットのページをご覧ください。
http://support.sakura.ad.jp/support/web/manual/trouble/web503.html
http://support.sakura.ad.jp/support/web/manual/tech/telnet/telnet04.html
2007/04/02: BUFFALOのルータ(BBR-4HG)で、ファイル共有ができない。
ウェブとは関係ないですが、先日ルータにBUFFALOのBBR-4HGというルータを導入して、その後ファイル共有ができなくなっていました。いろいろ試したのですが、最終的にNortonのファイアーウォールが邪魔をしていたことが判明。
Nortonのファイアーウォールの「設定」で、「ネットワーク」を選択して、「ウィザード」を実行すると、勝手にルータを見つけてくれるので、それを許可するようにするとファイル共有ができるようになりました。
どうも、BBR-4HGの初期設定が、192.168.11.0番台みたいで、192.168.0.0番台じゃなかったのがダメだったようです。192.168.11.0番台の通信を許可することでちゃんと動くようになった模様。以上、他の方で同じ問題にぶち当たった人のお役に立てればと思います。
Nortonのファイアーウォールの「設定」で、「ネットワーク」を選択して、「ウィザード」を実行すると、勝手にルータを見つけてくれるので、それを許可するようにするとファイル共有ができるようになりました。
どうも、BBR-4HGの初期設定が、192.168.11.0番台みたいで、192.168.0.0番台じゃなかったのがダメだったようです。192.168.11.0番台の通信を許可することでちゃんと動くようになった模様。以上、他の方で同じ問題にぶち当たった人のお役に立てればと思います。