トップページphp
1001コメント311KB

【PHP】下らねぇ質問はID出して書き込みやがれ 114

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/01/02(月) 02:03:25.50ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0071nobodyさん2012/01/03(火) 02:03:49.54ID:???
>>61
>session_data: name|s:7:"1234567";id|s:9:"123456789";
s:7やs:9ってのはString(7) String(9)ってこと
つまり文字列型の変数で長さが7文字って書いてるだけ

>>70
PHPはマルチスレッド非対応
っぽいことはcURL使えばできる
0072nobodyさん2012/01/03(火) 02:38:05.01ID:rKocSQ20
>>71
やっぱりマルチスレッドはできないですよね。
>>65は嘘つきですね
0073nobodyさん2012/01/03(火) 02:53:05.42ID:???
>>71
おまえ構うなよ
0074nobodyさん2012/01/03(火) 02:53:47.08ID:rKocSQ20
>>73
あなたも嘘つきですか?
0075nobodyさん2012/01/03(火) 03:46:50.55ID:???
>>64 は、マルチスレッドっぽいことがしたいの?
0076nobodyさん2012/01/03(火) 03:48:48.69ID:???
>>61
確認する暇がないんで嘘付いてたら悪いけど
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:???
まぁjsonにするのが普通だけどSESSIONは再利用できないでしょ
中身と何かしらユーザーと紐付けるユニークなIDだけを格納しておいて新しいSESSIONへ入れるという実装が現実的
0078nobodyさん2012/01/03(火) 03:52:02.64ID:5Pk6ggV8
>>71
ありがとうございます。
ちょっと自分で調べてみて、seliarizeという関数がセッションのキーバリューをこの形式に変換していることが分かりました。
0079nobodyさん2012/01/03(火) 04:00:17.52ID:5Pk6ggV8
>>76,77
やっぱりそういう方法になりますかね…
とりあえず
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:???
PHPのシリアライズのバグは治ったんでしょうか?
0081nobodyさん2012/01/03(火) 04:13:01.20ID:???
なんか厄介事やろうとしてるみたいだけど素直にajaxでPHPからjsonでもらったら?
0082nobodyさん2012/01/03(火) 04:17:24.79ID:???
>>61
>>76
そんなことするくらいならPHP以外の言語にしては?
0083nobodyさん2012/01/03(火) 10:51:44.23ID:???
いい加減な事いう>>65が答えられなくて誤魔化してきたことに笑った
0084nobodyさん2012/01/03(火) 14:52:20.49ID:???
関数の呼び出し元はdebug_backtrace()で、ローカル変数はget_defined_vars()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0085nobodyさん2012/01/03(火) 15:03:14.85ID:???
>>84
>>1
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()
で取得できるようですが、呼び出し元のローカル変数一覧を取得する方法は
ないのでしょうか?
0087nobodyさん2012/01/03(火) 16:56:09.74ID:???
>>86
ないです
0088nobodyさん2012/01/03(火) 17:16:36.40ID:u/AA2OwX
>>87
わかりました。ありがとうございます。
0089nobodyさん2012/01/03(火) 17:19:27.22ID:???
>>88
俺はコードを載せてもらわないと答えられないから
サンプルコードを出してもらってどこの変数をどこから取得したいのかコードで書いてくれ
基本的に俺は日本語だけの質問は答えないけど
0090nobodyさん2012/01/03(火) 17:20:04.63ID:???
ちなみに外人です
0091862012/01/03(火) 18:08:55.19ID:u/AA2OwX
こんな感じなんですが。
function a() {
$a = 123;
b();
}

function b() {
// ここでa()のローカル変数を取得したい
// (array('a' => 123))
}
0092nobodyさん2012/01/03(火) 18:19:55.30ID:???
>>91
function a() {
$a = 123;
b(get_defined_vars());
}

function b($vars) {
var_dump($vars);
}
0093nobodyさん2012/01/03(火) 18:25:22.21ID:???
function a() {
$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
phpMyAdminのテーマって、公式から拾える分しかないのですか?
同じデザインで、色違いってのが3種類欲しいんだけど
0096nobodyさん2012/01/03(火) 18:51:12.87ID:???
>>95
他にもあるよ
0097nobodyさん2012/01/03(火) 18:52:03.43ID:???
>>91
こういう風にクラスに入れとくのは?
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();
0098nobodyさん2012/01/03(火) 19:31:14.73ID:???
>>31

おいおいおい、

そういうときこそシングルトン使えよ。
全くこのスレはレベル低いな。
0099nobodyさん2012/01/03(火) 20:27:11.00ID:???
DBアクセスにシングルトンを使う場合
あくまでも同じユーザがリソースを使いまわすためにあるもので
別のユーザが使ってたリソースを別ユーザが再利用するなんてことは出来ない

>>31のようなものは単にキャッシュの仕組みを作ればいい
0100nobodyさん2012/01/03(火) 20:39:04.35ID:???
釣られんなよ
0101nobodyさん2012/01/03(火) 20:40:01.09ID:???
自分のレベルの低さを釣りで済ますなよ
0102nobodyさん2012/01/03(火) 20:47:44.01ID:???
>>99
えーーーー。知らなかった。
PHPのシングルトンは特殊ですね。
0103nobodyさん2012/01/03(火) 20:54:55.18ID:???
>>99
おいおい、君もレベル低いな。
アプリケーションスコープに入れて
シングルトンかませばいいだろ。
0104nobodyさん2012/01/03(火) 21:04:35.24ID:???
一人何役?
0105nobodyさん2012/01/03(火) 21:32:25.10ID:???
間抜けなこと言ってるのは >>98 >>102 >>103
0106nobodyさん2012/01/03(火) 21:38:30.72ID:???
コネクションプーリングなんてのはそもそもアプリケーションサーバが対応してないと無意味だしな
0107nobodyさん2012/01/03(火) 23:06:40.58ID:???
>>71
>PHPはマルチスレッド非対応
公式では”非推奨”とされてるだけで、Apache MPM workerでマルチスレッドモードになる
http://php.net/manual/ja/function.zend-thread-id.php
0108nobodyさん2012/01/03(火) 23:20:26.07ID:???
>>107
非推奨は使い物にならないんだよ。
完全趣味ならともかくビジネスだったら非対応。
これだからPHPは馬鹿にされる。
0109nobodyさん2012/01/03(火) 23:27:02.14ID:???
>>108
馬鹿はそうやって最初からあきらめるが、頭が良い人間はこれでビジネスをする
http://www.phpclasses.org/blog/post/66-More-defensive-programming-practices-to-survive-Web-site-traffic-peaks.html
0110nobodyさん2012/01/03(火) 23:33:06.46ID:???
>>107
Apacheの機能じゃんそれ・・・
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:???
必死にググって張ってるだけだろwwwwwwwwwwwwwwwwwwwwwwwwwwww
0113nobodyさん2012/01/03(火) 23:42:00.40ID:???
>>112を擁護するわけではないけど
英語でベタベタ貼る人ってだいたい理解してない
ごまかしてる感がするので日本語で説明して下さい
0114nobodyさん2012/01/03(火) 23:44:14.54ID:???
>>109
静的コンテンツをマルチスレッド化されたウェブサーバで運用するアイデア
>>111
マルチスレッド、マルチプロセスのパフォーマンス比較
0115nobodyさん2012/01/03(火) 23:50:08.31ID:???
>>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
0117nobodyさん2012/01/03(火) 23:52:26.89ID:???
>>109
頭の良い人はPHP以外の手段を使う。これ常識。
0118nobodyさん2012/01/03(火) 23:57:57.57ID:???
>>111
アパッチの動作モードの話をしてどうすんだっていう
0119nobodyさん2012/01/04(水) 00:00:11.45ID:???
PHPerはバカばっかり。
0120nobodyさん2012/01/04(水) 00:15:57.19ID:GubBHlXR
PHPでJavaを実装したいのですがどうしたらよいでしょうか?
0121nobodyさん2012/01/04(水) 00:56:17.87ID:???
このスレ程度低すぎ。
0122nobodyさん2012/01/04(水) 00:56:25.29ID:???
年明けてもココ相変わらずだなwwwwwwwwwwwwww
0123nobodyさん2012/01/04(水) 01:05:33.68ID:???
>>120
QuercusというJavaで実装されたPHPはあるが、
その逆はどうあがいても無理。
0124nobodyさん2012/01/04(水) 01:20:24.22ID:???
限定的なものなら作れるかもねw
0125nobodyさん2012/01/04(水) 02:06:09.87ID:???
>>107
将来Zend Thread SafetyてのはRubyやpythonみたいに使えるようになるのかねぇ
0126nobodyさん2012/01/04(水) 02:48:24.12ID:???
PHPはC言語で実装されている。
逆にC言語はPHPで実装できる。これ常識よ。
0127nobodyさん2012/01/04(水) 03:25:48.26ID:???
どーも年末からキチガイ中年が一人わいてるな
いい歳こいて恥ずかしくないのかね
PHPがクソ言語?そうかもね、そんな気もする
で?ってゆう
0128nobodyさん2012/01/04(水) 03:48:18.28ID:zYHozA87
phpでセッションをmemcachedに保存しようと思っています
セッションの格納時にデータシリアライズを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で保存されません。
どうしたらうまくいくでしょうか。
0129nobodyさん2012/01/04(水) 03:48:18.88ID:???
>>127
このスレはレベル低すぎるよ・・・。
0130nobodyさん2012/01/04(水) 03:54:18.43ID:???
>>128
そんな処理をPHPですること自体に無理がある。
PHPのシリアライズはバグありで有名なので、
別言語で書き直すべき。
0131nobodyさん2012/01/04(水) 04:04:27.07ID:???
>>128
あのさ、ただの文字列'abc'とかの出し入れやってみた?
次にmemcachedに格納したそのセッションとやらを単純に取り出してdumpしてみた?
質問する以前の問題だと思うんだよね
0132nobodyさん2012/01/04(水) 04:12:27.36ID:???
>>128
まさかとは思うが session.save_handler を指定してないとかないよな
http://www.php.net/manual/ja/memcached.sessions.php
0133nobodyさん2012/01/04(水) 04:30:44.93ID:zYHozA87
>>130
http://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
>>131
$m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_JSON);
とmemcached.iniに memcached.serializer = "json" を入れることで、
シリアライズの指定ができるのではないかと思っていたのですが、結果のとおりだめでした。
セッションの情報自体は保存されるものの、保存形式はjsonではありません

0135nobodyさん2012/01/04(水) 04:43:47.34ID:???
>string|s:15:"a simple string";array|a:2:{i:0;i:11;i:1;i:12;}object|O:8:"stdClass":0:{}

オレにはjsonに見えるけどオレの目がおかしいの?
0136nobodyさん2012/01/04(水) 05:02:08.10ID:???
>>133
php.ini の session.serialize_handler でやらなきゃダメなんじゃないかな
ソースちら見したけど memcached 側で変換しているようには見えないんだが

>>135
眼科行け
0137nobodyさん2012/01/04(水) 06:17:34.03ID:49ygosTB
'w+' 読み込み/書き出し用でオープンします。 ファイルポインタをファイルの先頭に置き、 ファイルサイズをゼロにします。 ファイルが存在しない場合には、作成を試みます。

fopenのw+ってファイルサイズをゼロにするとあるのですがw+で開いてfseekせずに読むことってできますよね?

0138nobodyさん2012/01/04(水) 06:28:40.45ID:???
ああああああああw+ゼロって消すのか・・・
w+で読み込みって意味あるのかコレ・・

カウンタみたいな使い方の場合 r+じゃないと行けないのか
事前にファイルの存在調べてtouch()で作らなきゃいけないんですかね。。

0139nobodyさん2012/01/04(水) 06:51:03.20ID:???
>>138
'c' 書き込みのみでオープンします。ファイルが存在しない場合には新規作成を試みます。
'c+' 読み込み/書き出し用でオープンします。 それ以外のふるまいは 'c' と同じです。
0140nobodyさん2012/01/04(水) 08:30:12.32ID:3Vpp07Ai
phpで携帯とかスマートフォンとかiphon対応でPC版と
違うのはMETA部と画面の幅とあと特別にあるのでしょうか?
0141nobodyさん2012/01/04(水) 09:13:15.42ID:???
それPHP関係なくね
HTMLレベルの話じゃん
0142nobodyさん2012/01/04(水) 11:37:54.28ID:zsEsnx9y
行末にセミコロンを自働で付けてくれるエディタってないですか?
0143nobodyさん2012/01/04(水) 11:50:04.23ID:???
>>133
なんでアプリケーションスコープ使わないの?
こっちの方が簡単でしょ。
0144nobodyさん2012/01/04(水) 11:52:14.84ID:???
>>142
emacs
0145nobodyさん2012/01/04(水) 13:05:02.27ID:???
どうやるの?
0146nobodyさん2012/01/04(水) 14:23:10.70ID:???
改行コードをセミコロン+改行コードに置き換えればいいだけじゃね
0147nobodyさん2012/01/04(水) 14:38:11.76ID:???
>>139
ありがトン
0148nobodyさん2012/01/04(水) 14:42:27.81ID:???
>>146
そうなんだけど、自動でやるにはどうすればいいでしょうか?
ぐぐったり調べてみたけどわかりませんでした
0149nobodyさん2012/01/04(水) 15:06:30.61ID:gPY3Wdcl
phpのクラスを使った適当なサンプルプログラムがあるwebサイトを
教えてください、英語サイトでもいいです。
0150nobodyさん2012/01/04(水) 15:19:37.29ID:???
>>149

class A{
public $s = "string";
}
$a = new A();
echo $a->s; // string

class B{
public $s = "string";
}
$b = new B();
echo $b->s; // error

class B{
private $s = "string";
public function e(){
return $this->s;
}
}

$b = new B();
echo $b->e; // string

class C{
public $s = "string";
function __construct($s){
$this->s = $s;
}
}
$c = new C("abc");
echo $c->s; // abc
0151nobodyさん2012/01/04(水) 15:35:31.77ID:???
>>148
なんでそんなもんが必要なの?

if($hoge) {;
$fuga = 0;
} else {;
$fuga = 1;
};

こんなことになるけど
そもそも自動でセミコロン付加するエディタってほかにあるの?
0152nobodyさん2012/01/04(水) 15:44:52.30ID:???
>>151
ほかにってことは自動でそのように付加するエディタがあるってことか?
迷惑千万だけど、プラグインとか書きゃそうなるけど
0153nobodyさん2012/01/04(水) 15:49:55.61ID:???
>>152
いや、ここで求めているほかにそんなのあるのかと
聞いたことないし、そんなのあったら鬱陶しいことこの上ない
0154nobodyさん2012/01/04(水) 15:56:40.16ID:???
>>151
>なんでそんなもんが必要なの?

よく付け忘れたり、隣のコロンを付けちゃってエラーになるので
エディタが構文解析して必要な場所に自働で付けてくれれば便利だと思ったのですが
2012年の今でもそこまで便利なものはない?
0155nobodyさん2012/01/04(水) 16:02:08.07ID:???
普通の人はそんなの迷惑なだけで誰も欲してないから作られないんでしょ
欲しければ自分で正規表現でも書いてエディタのプラグイン作ったらいいんじゃないの
0156nobodyさん2012/01/04(水) 16:24:04.92ID:???
今日も高レベルなトークが繰り返されているね。
0157nobodyさん2012/01/04(水) 16:28:08.27ID:???
PHPerはアホばかりw
0158nobodyさん2012/01/04(水) 16:29:38.31ID:???
つうかPHPと関係ない質問はご遠慮くださいよ
エディタスレにでもいきやがれ
0159nobodyさん2012/01/04(水) 16:48:58.91ID:???
>>154
秀丸ならある
0160nobodyさん2012/01/04(水) 17:02:08.23ID:???
>>157
同じアホなら書き込まにゃ損損♪
0161nobodyさん2012/01/04(水) 17:03:25.32ID:???
>>159
文脈判断して、付加してくれるってことかな。
$str = "hogehoge"
  . "hogehoge"
  ;
こういうコード書こうとしたらどうなるの?
0162nobodyさん2012/01/04(水) 17:18:26.29ID:???
>>154
禿丸ならある
0163nobodyさん2012/01/04(水) 17:26:11.66ID:???
>>161
マクロ実装しだいでどうにでもなる
しかしPHPスレだからこれ以上はここで回答しない
秀丸使い始めてから秀丸スレ池
0164nobodyさん2012/01/04(水) 17:30:34.60ID:???
PHPerはアホばかりw
0165nobodyさん2012/01/04(水) 17:47:35.26ID:???
どう贔屓目にみても>>164が一番アホにみえるわ
自分のレス全部読み返してみたら
たぶん死にたくなると思う
0166nobodyさん2012/01/04(水) 17:47:51.62ID:1MDsVe6G
すみません 初心者ですが教えて下さい。
phpのファイルを拡張子なしで表示したいのですが、
レンタルサーバーで
option+Multiviewが使えませんでした。

どこかのサイトで
http://www.sample.com/abc
じゃなく
http://www.sample.com/abc/
ならば
割と簡単に出来ると書いてあったのですが、方法をご存知の方はいらっしゃいませんか」?

検索したのですがわからなかったので、
検索ワードも教えて頂けると嬉しいです。
0167nobodyさん2012/01/04(水) 17:57:03.48ID:???
>>166
普通はmod_rewrite

>どこかのサイトで
>http://www.sample.com/abc
>じゃなく
>http://www.sample.com/abc/
>ならば
>割と簡単に出来ると書いてあったのですが、方法をご存知の方はいらっしゃい>ませんか」?

これはディレクトリで分けてindex.phpを置くって意味じゃない
/abc/index.php
その場合はhttpd.confなり.htaccessなりで
DirectoryIndex index.php
になってればおk
0168nobodyさん2012/01/04(水) 18:12:06.36ID:???
>>163
え、自分でマクロ実装しろって話なの?この流れで?まさか?
0169nobodyさん2012/01/04(水) 18:16:59.21ID:???
え、マクロも書けない素人なの?だったら他の初心者向けエディタ使ってればいいと思うよ
0170nobodyさん2012/01/04(水) 18:19:13.57ID:???
へ?
■ このスレッドは過去ログ倉庫に格納されています