【PHP】下らねぇ質問はID出して書き込みやがれ 114
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/01/02(月) 02:03:25.50ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0042nobodyさん
2012/01/02(月) 19:21:02.53ID:Vsxd7/VoPHPって今最も優れたサーバーサイド言語ですよね。
何かお気に障りましたか?
0043nobodyさん
2012/01/02(月) 19:24:45.27ID:???0044nobodyさん
2012/01/02(月) 19:25:31.63ID:Lu/m0VMPサーバを再起動してもmemcachedで保有するデータは飛ばないって事ですか
でもmemcachedを再起動したら飛びますよね?
こういう場合ってどうやってデータをバックアップしてmemcached再起動後にデータをリストアするのでしょうか?
0045nobodyさん
2012/01/02(月) 19:27:40.54ID:Vsxd7/Voお疲れさん。
今日の釣りはこれで終了する。
ごくろう。
0046nobodyさん
2012/01/02(月) 19:33:37.50ID:???0048nobodyさん
2012/01/02(月) 19:52:33.98ID:???すべてのユーザに同じデータならニュースサイトのRSSひっぱってくりゃいい
なんでもできる状態で”これしかできない”限定の質問が視野狭窄脳梗塞状態
周りにこーゆーヤツが多くてちょっとイラッ☆っときてしまった
反省はしてない
0050nobodyさん
2012/01/02(月) 20:41:19.53ID:???面倒くせえんだよ->ってうつの
0053nobodyさん
2012/01/02(月) 20:54:47.07ID:???低脳が自演すると、自分の間抜けさを補強しちゃうのが悲しいな
黒いものをいくら「白だ!」と自演してもみんなクスクス笑うだけ
0056nobodyさん
2012/01/02(月) 21:17:10.64ID:???0057nobodyさん
2012/01/02(月) 21:18:55.95ID:Vsxd7/Vo釣りって言ってるのに、入れ食い状態。
みんなに正月早々つきあってもらってごめんね。
またネタ用意してくるから待っててねwwwwwwww
0058nobodyさん
2012/01/02(月) 21:21:12.46ID:???'';;';';;,.,
''';;';';;'';;;,., ザッ
''';;';'';';''';;'';;;,., ザッ
ザッ ;;''';;';'';';';;;'';;'';;;
;;'';';';;'';;';'';';';;;'';;'';;;
vymyvwymyvymyvy ザッ
ザッ MVvvMvyvMVvvMvyvMVvv、
Λ_ヘ^−^Λ_ヘ^−^Λ_ヘ^Λ_ヘ
ザッ ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
__,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ ザッ
/\___/ヽ /\___ /\___/ヽ _/ヽ /\___/ヽ
/ \/ / \ / \
. | | | | | |
| | | | | |
. | | | | | |
\ /\ \ / \ /
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\ /`ー‐--‐‐―´
「vipに帰ります」「vipに帰ります」「vipに帰ります」「vipに帰ります」
0059nobodyさん
2012/01/02(月) 21:22:02.25ID:???0060nobodyさん
2012/01/02(月) 21:57:14.73ID:???0061nobodyさん
2012/01/03(火) 00:37:02.85ID:5Pk6ggV8ドメインは同じです。
http://www.phppro.jp/phptips/archives/vol45/1
を参考にしてまずはphpのセッションをmysqlに入れる方法を試してみたのですが、
DBを見たところ以下のような形式でデータが保存されていました。
session_id: bhvsjrg7dsroutsea13q1ji52
session_data: name|s:7:"1234567";id|s:9:"123456789";
session_createdate: 2012-01-02 23:44:17
session_idとsession_createdateは特に問題ないのですが、
session_dataの保存形式がよく分かりません。
どういうルールに基づいた形式なのでしょうか?
またこのsession_dataの保存形式を変更することはできるのでしょうか?
0064nobodyさん
2012/01/03(火) 00:47:46.14ID:rKocSQ20PHPでマルチスレッドを実現する方法を教えて下さい。
0065nobodyさん
2012/01/03(火) 00:53:19.06ID:???>>63 apache
>>64 いくらでもあるがなggrks
0066nobodyさん
2012/01/03(火) 01:00:40.26ID:rKocSQ20すみません。
もっと詳しく教えてください。
どうやってマルチスレッドになるのでしょうか?
0067nobodyさん
2012/01/03(火) 01:19:51.05ID:rKocSQ20本当にPHPが単なる並行処理ではなく
マルチな「スレッド」として動くのでしょうか?
どのような仕組みか詳しく教えていただけませんでしょうか?
0068nobodyさん
2012/01/03(火) 01:30:14.56ID:???0069nobodyさん
2012/01/03(火) 01:32:37.21ID:???0070nobodyさん
2012/01/03(火) 01:38:20.07ID:rKocSQ20>>69
>>65の方が教えていただけませんので代わりに教えていただけませんでしょうか?
PHPをマルチな「スレッド」として動かす方法を。
0071nobodyさん
2012/01/03(火) 02:03:49.54ID:???>session_data: name|s:7:"1234567";id|s:9:"123456789";
s:7やs:9ってのはString(7) String(9)ってこと
つまり文字列型の変数で長さが7文字って書いてるだけ
>>70
PHPはマルチスレッド非対応
っぽいことはcURL使えばできる
0074nobodyさん
2012/01/03(火) 02:53:47.08ID:rKocSQ20あなたも嘘つきですか?
0076nobodyさん
2012/01/03(火) 03:48:48.69ID:???確認する暇がないんで嘘付いてたら悪いけど
JSONで保存するならこんな感じかね
> http://www.phppro.jp/phptips/archives/vol45/1
function read ($id) {
global $db;
mysql_select_db("db_name");
$result = mysql_query("SELECT *
FROM session_t
WHERE session_id='{$id}'");
if(mysql_num_rows($result) == 1){
$row = mysql_fetch_array($result);
- return $row['session_data'];
+ $_SESSION = json_decode($row['session_data']);
+ return session_encode();
中略
function write ($id, $sess_data) {
+ session_decode($sess_data);
+ $sess_data = json_encode($_SESSION);
0077nobodyさん
2012/01/03(火) 03:50:58.26ID:???中身と何かしらユーザーと紐付けるユニークなIDだけを格納しておいて新しいSESSIONへ入れるという実装が現実的
0078nobodyさん
2012/01/03(火) 03:52:02.64ID:5Pk6ggV8ありがとうございます。
ちょっと自分で調べてみて、seliarizeという関数がセッションのキーバリューをこの形式に変換していることが分かりました。
0079nobodyさん
2012/01/03(火) 04:00:17.52ID:5Pk6ggV8やっぱりそういう方法になりますかね…
とりあえず
http://www.1x1.jp/blog/2010/12/php_serialize_data_type.html
http://code.activestate.com/recipes/414334/
seliarizeが中でどんなことやってるのかが何となく分かりましたし、
php側での対応は特にせずにjavascript側でseliarize関数的なものを実装しようかと思います。
ありがとうございます。
0080nobodyさん
2012/01/03(火) 04:11:57.55ID:???0081nobodyさん
2012/01/03(火) 04:13:01.20ID:???0084nobodyさん
2012/01/03(火) 14:52:20.49ID:???で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0086nobodyさん
2012/01/03(火) 16:32:20.69ID:u/AA2OwX【OS名】FreeBSD 8.1-RELEASE-p5
【PHPのバージョン】5.3.8
【連携ソフトウェア】
【質問内容】
関数の呼び出し元はdebug_backtrace()で、ローカル変数はget_defined_vars()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0088nobodyさん
2012/01/03(火) 17:16:36.40ID:u/AA2OwXわかりました。ありがとうございます。
0089nobodyさん
2012/01/03(火) 17:19:27.22ID:???俺はコードを載せてもらわないと答えられないから
サンプルコードを出してもらってどこの変数をどこから取得したいのかコードで書いてくれ
基本的に俺は日本語だけの質問は答えないけど
0090nobodyさん
2012/01/03(火) 17:20:04.63ID:???009186
2012/01/03(火) 18:08:55.19ID:u/AA2OwXfunction a() {
$a = 123;
b();
}
function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}
0092nobodyさん
2012/01/03(火) 18:19:55.30ID:???function a() {
$a = 123;
b(get_defined_vars());
}
function b($vars) {
var_dump($vars);
}
0093nobodyさん
2012/01/03(火) 18:25:22.21ID:???$a = 123;
b();
}
function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}
これだけ見ると
b()に引数で渡せよってなるね
0094nobodyさん
2012/01/03(火) 18:36:58.73ID:???既に俺は渡した
0095nobodyさん
2012/01/03(火) 18:49:51.05ID:Ccq7mdky同じデザインで、色違いってのが3種類欲しいんだけど
0097nobodyさん
2012/01/03(火) 18:52:03.43ID:???こういう風にクラスに入れとくのは?
class Debug
{
public $debug = array();
public function get_vars(){var_dump(get_object_vars($this));}
}
class Test extends Debug{}
function a() {
$test1 = 1;
$test2 = 2;
$test3 = 3;
// デバッグモード
global $obj;
$obj = new Test();
$obj->debug["test"] = $test1;
$obj->debug["test2"] = $test2;
$obj->debug["test3"] = $test3;
}
function b() {
// デバッグモード
global $obj;
$obj->get_vars();
}
a();
b();
0099nobodyさん
2012/01/03(火) 20:27:11.00ID:???あくまでも同じユーザがリソースを使いまわすためにあるもので
別のユーザが使ってたリソースを別ユーザが再利用するなんてことは出来ない
>>31のようなものは単にキャッシュの仕組みを作ればいい
0100nobodyさん
2012/01/03(火) 20:39:04.35ID:???0101nobodyさん
2012/01/03(火) 20:40:01.09ID:???0104nobodyさん
2012/01/03(火) 21:04:35.24ID:???0106nobodyさん
2012/01/03(火) 21:38:30.72ID:???0107nobodyさん
2012/01/03(火) 23:06:40.58ID:???>PHPはマルチスレッド非対応
公式では”非推奨”とされてるだけで、Apache MPM workerでマルチスレッドモードになる
http://php.net/manual/ja/function.zend-thread-id.php
0108nobodyさん
2012/01/03(火) 23:20:26.07ID:???非推奨は使い物にならないんだよ。
完全趣味ならともかくビジネスだったら非対応。
これだからPHPは馬鹿にされる。
0109nobodyさん
2012/01/03(火) 23:27:02.14ID:???馬鹿はそうやって最初からあきらめるが、頭が良い人間はこれでビジネスをする
http://www.phpclasses.org/blog/post/66-More-defensive-programming-practices-to-survive-Web-site-traffic-peaks.html
0111nobodyさん
2012/01/03(火) 23:33:33.84ID:???[PHP-DEV] PHP Performance in Apache: Multi-Process vs Multi-Threaded
http://www.serverphorums.com/read.php?7,247223
0112nobodyさん
2012/01/03(火) 23:40:41.72ID:???0113nobodyさん
2012/01/03(火) 23:42:00.40ID:???英語でベタベタ貼る人ってだいたい理解してない
ごまかしてる感がするので日本語で説明して下さい
0114nobodyさん
2012/01/03(火) 23:44:14.54ID:???静的コンテンツをマルチスレッド化されたウェブサーバで運用するアイデア
>>111
マルチスレッド、マルチプロセスのパフォーマンス比較
0116nobodyさん
2012/01/03(火) 23:51:11.23ID:???LAMP システムを調整する: 第 2 回 Apache と PHP を最適化する
http://www.ibm.com/developerworks/jp/linux/library/l-tune-lamp-2.html
0119nobodyさん
2012/01/04(水) 00:00:11.45ID:???0120nobodyさん
2012/01/04(水) 00:15:57.19ID:GubBHlXR0121nobodyさん
2012/01/04(水) 00:56:17.87ID:???0122nobodyさん
2012/01/04(水) 00:56:25.29ID:???0124nobodyさん
2012/01/04(水) 01:20:24.22ID:???0125nobodyさん
2012/01/04(水) 02:06:09.87ID:???将来Zend Thread SafetyてのはRubyやpythonみたいに使えるようになるのかねぇ
0126nobodyさん
2012/01/04(水) 02:48:24.12ID:???逆にC言語はPHPで実装できる。これ常識よ。
0127nobodyさん
2012/01/04(水) 03:25:48.26ID:???いい歳こいて恥ずかしくないのかね
PHPがクソ言語?そうかもね、そんな気もする
で?ってゆう
0128nobodyさん
2012/01/04(水) 03:48:18.28ID:zYHozA87セッションの格納時にデータシリアライズをphpのデフォルトではなくjsonにしたいのですが
その指定方法が分かりません。
$m = new Memcached();
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
$m->addServer('localhost', 11211);
$m->set('array', array(11, 12));
$m->set('object', new stdclass, time() + 300);
上記のコードを試してmemcachedを覗いたところ、データは問題なくjsonで格納されていたため、
jsonでmemcachedに保存すること自体はできているようです。
https://github.com/andreiz/php-memcached/blob/master/memcached.ini
を参考にしてmemcached.iniに memcached.serializer = "json" を入れたり
$m = new Memcached();
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
session_start();
として読み込み時にjsonを指定していますが、どうしてもjsonで保存されません。
どうしたらうまくいくでしょうか。
0130nobodyさん
2012/01/04(水) 03:54:18.43ID:???そんな処理をPHPですること自体に無理がある。
PHPのシリアライズはバグありで有名なので、
別言語で書き直すべき。
0131nobodyさん
2012/01/04(水) 04:04:27.07ID:???あのさ、ただの文字列'abc'とかの出し入れやってみた?
次にmemcachedに格納したそのセッションとやらを単純に取り出してdumpしてみた?
質問する以前の問題だと思うんだよね
0132nobodyさん
2012/01/04(水) 04:12:27.36ID:???まさかとは思うが session.save_handler を指定してないとかないよな
http://www.php.net/manual/ja/memcached.sessions.php
0133nobodyさん
2012/01/04(水) 04:30:44.93ID:zYHozA87http://php.net/manual/ja/memcached.constants.php
自分の独自実装ではなく、php5.2以降に追加されたオプションだと書いてあったので
php側が提供する機能ならば無理があるというほどではないと思っていたのですが、
無理なのでしょうか…
>>131
そもそもmemcachedにセッション保存できているか確認しろということでしょうか?以下のコードを試しています
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
session_start();
$_SESSION['string'] = 'a simple string';
$_SESSION['array'] = array(11, 12);
$_SESSION['object'] = new stdclass();
var_dump($_SESSION["string"]);
var_dump($_SESSION["array"]);
var_dump($_SESSION["object"]);
結果
string(15) "a simple string"
array(2) { [0]=> int(11) [1]=> int(12) }
object(stdClass)#3 (0) { }
memcachedから手動で読みだした結果
string|s:15:"a simple string";array|a:2:{i:0;i:11;i:1;i:12;}object|O:8:"stdClass":0:{}
>>131
はい、ちゃんと memcachedとmemcachedの動くホスト(localhost)とデフォルトのポート番号を指定しています。
telnetで接続してみても問題はありません。
0134nobodyさん
2012/01/04(水) 04:32:33.54ID:zYHozA87$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
とmemcached.iniに memcached.serializer = "json" を入れることで、
シリアライズの指定ができるのではないかと思っていたのですが、結果のとおりだめでした。
セッションの情報自体は保存されるものの、保存形式はjsonではありません
0135nobodyさん
2012/01/04(水) 04:43:47.34ID:???オレにはjsonに見えるけどオレの目がおかしいの?
0136nobodyさん
2012/01/04(水) 05:02:08.10ID:???php.ini の session.serialize_handler でやらなきゃダメなんじゃないかな
ソースちら見したけど memcached 側で変換しているようには見えないんだが
>>135
眼科行け
0137nobodyさん
2012/01/04(水) 06:17:34.03ID:49ygosTBfopenのw+ってファイルサイズをゼロにするとあるのですがw+で開いてfseekせずに読むことってできますよね?
0138nobodyさん
2012/01/04(水) 06:28:40.45ID:???w+で読み込みって意味あるのかコレ・・
カウンタみたいな使い方の場合 r+じゃないと行けないのか
事前にファイルの存在調べてtouch()で作らなきゃいけないんですかね。。
0139nobodyさん
2012/01/04(水) 06:51:03.20ID:???'c' 書き込みのみでオープンします。ファイルが存在しない場合には新規作成を試みます。
'c+' 読み込み/書き出し用でオープンします。 それ以外のふるまいは 'c' と同じです。
0140nobodyさん
2012/01/04(水) 08:30:12.32ID:3Vpp07Ai違うのはMETA部と画面の幅とあと特別にあるのでしょうか?
0141nobodyさん
2012/01/04(水) 09:13:15.42ID:???HTMLレベルの話じゃん
■ このスレッドは過去ログ倉庫に格納されています