【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等)・フレームワークは各該当スレへ
0015nobodyさん
2012/01/02(月) 09:53:32.11ID:???0018nobodyさん
2012/01/02(月) 11:02:52.10ID:???Pear Class: Net_UserAgent_Detect
PHP4でsingleton実装してる。
http://pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodsingleton
0019nobodyさん
2012/01/02(月) 12:14:22.05ID:???0020nobodyさん
2012/01/02(月) 12:20:49.99ID:???0021nobodyさん
2012/01/02(月) 12:29:16.32ID:Vsxd7/Vo公式サイトに書いてありました。
シェアードナッシングとはプロセスごとにメモリ空間バラバラに
なるからということか。
このへんはマルチスレッドな言語とは事情が違うわけですね。
www.php.net/manual/ja/language.oop5.patterns.php
0023nobodyさん
2012/01/02(月) 16:10:22.97ID:???公式サイトにもPHPでは意味ないかもって書いてあるじゃん。
まったく無意味ではないけど複数プロセス・複数メモリ空間のPHPでは
本来の意味は無いって。
0025nobodyさん
2012/01/02(月) 17:10:05.14ID:???0026nobodyさん
2012/01/02(月) 17:18:55.87ID:jFXHaYiBクラス名でもAという名前をつけるとエラーが出たのですが
インターフェースとクラスでも名前がかぶるといけないのでしょうか?
0027nobodyさん
2012/01/02(月) 17:23:24.40ID:???それはオブジェクト設計がおかしい
0028nobodyさん
2012/01/02(月) 17:25:38.11ID:???どこがわかっていないか説明してあげてね。
>>25
おっしゃるとおり。1プロセスで1インスタンス生成。
PHPの場合は複数のプロセスで動くのでサイト内で
唯一のインスタンスにはならないね。
0029nobodyさん
2012/01/02(月) 17:43:31.44ID:???0030nobodyさん
2012/01/02(月) 17:46:06.37ID:jFXHaYiB設計がおかしいということはやはり、
同じ名前はつけられないことになってるんですね
ありがとうございます
0031nobodyさん
2012/01/02(月) 18:03:00.77ID:Vsxd7/Voこういった場合どのようにするのが効率的ですか?
トップページにニュースを表示させます。
ニュースのデータはDBへ保存しています。
ニュースは誰が訪問しても同じデータですので、
ユーザーごとにDBへ取りに行くのは不効率です。
そのためDBから取り出したデータを
他のユーザーもDBへ再アクセスせずに利用できるようにしたいのですが
どのような方法がありますか?
それともやはりユーザーごとにDBへ取りに行く必要があるのでしょうか?
0032nobodyさん
2012/01/02(月) 18:10:28.67ID:???サーブレットのライフサイクルを知らないんでしょ
>>30
コーディング規約でググるといい
クラス…名詞、インターフェース…形容詞と分けたり
プレフィックス (IUnko, IChinko) を付けたり
なぜそうしているのか?等勉強になるから
0033nobodyさん
2012/01/02(月) 18:24:49.10ID:???str_replaceとかstrlenとかなんだよ
str.replace str.lenとか
strreplace strlenとか
str_replace str_lenとか
いつになったらこういうのが統一すんだよ
一部でオブジェクト化してるが今のままで全ての手続き型からオブジェクト型に移行するのにPHP8ぐらいいきそうだな
0038nobodyさん
2012/01/02(月) 19:09:23.14ID:Lu/m0VMPサーバを再起動するとmemcachedに入っているデータは飛びますか?
0039nobodyさん
2012/01/02(月) 19:10:51.80ID:Vsxd7/Vo>>37
やっぱりそうなっちゃうんですね。
アプリケーション全体みたいなやつがあればいいんでしょうけど
PHPには無いのですね。わかりました。ありがとうございました。
0040nobodyさん
2012/01/02(月) 19:11:25.15ID:???APCなんかは無理だけど
つーかググれよ
0041nobodyさん
2012/01/02(月) 19:13:03.21ID:???おまえそもそもPHPをなんだと思ってるんだよ
トンチンカンすぎるだろ
ちなみにトンチンカンって言葉聞いたのすっげ久しぶりだ
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
マルチスレッド、マルチプロセスのパフォーマンス比較
■ このスレッドは過去ログ倉庫に格納されています