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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/03/19(火) 22:13:49.76ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 126
http://kohada.2ch.net/test/read.cgi/php/1359808868/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0671nobodyさん2013/04/30(火) 15:21:11.06ID:???
状況説明が下手すぎる

6で失敗してることは確認したの?
6で成功する環境が構築できていることは確認したの?
0672nobodyさん2013/04/30(火) 15:25:34.14ID:???
そら、もともとの3台の設定のままなら、
同じように失敗してるとこへ聞きにいって、同じこと繰り返すに決まってる。

クラスタ纏めてるサーバーが1台あって死活まで管理してるならともかく、
簡易的な分散なんだから。
0673nobodyさん2013/04/30(火) 15:38:05.83ID:???
>>671
すみません・・・

> 6で失敗してることは確認したの?
Yes

> 6で成功する環境が構築できていることは確認したの?
addServers(array(A,C))なら期待したとおりに動きます。

>>672
こんなコード書いてやってみましたが、確かにval1は取れませんね・・・そういうもんなのか(´Д`)

$m = new Memcached();

$servers = array(
array('localhost', 11211), //Memcachedが動いている
array('192.168.0.201', 11211), array(...), array(...), ... //存在しないサーバー100個ぐらい適当にぶっこむ
);
$m->addServers($servers);

$m->set('key1','val1',time()+100); //多分localhostじゃないとこに書き込もうとしてる

var_dump($m->get('key1')); // bool(false)・・・
0674nobodyさん2013/04/30(火) 15:46:15.33ID:???
下手にイチイチ死活チェックするより、てきとーなスクリプトで常駐監視させて
Bを速攻で復旧させたほうがスマートじゃないだろうか
数秒間落ちただけでDBが死ぬほどクリティカルじゃないんだろ?

ハードのトラブルとかで長期間落ちる場合は、addServersのところを自動なり手動なりで
書き換えてクラスタから切り離す。

あとは>>669のようにNoSQLか。どう冗長化すりゃいいのか俺は知らんけど。
0675nobodyさん2013/04/30(火) 19:04:08.46ID:???
>>670
アクセスが1秒間に数百もあるようなシステムなの?
0676nobodyさん2013/04/30(火) 19:59:46.53ID:???
そら秒間数十リクぐらいのシステムならMemcachedクラスタ構成にする必要ねーだろ
DBそのまま叩いてもイケる
0677nobodyさん2013/04/30(火) 20:02:21.83ID:???
そんなサイトがPHPって・・・
作成者が2chで質問って・・・
0678nobodyさん2013/04/30(火) 20:04:01.91ID:???
あ?PHPなめんな
0679nobodyさん2013/04/30(火) 20:06:21.67ID:???
wikiとかアフィブログとかでもピークで秒間数百なんて簡単にいくだろ
0680nobodyさん2013/05/01(水) 03:40:01.52ID:cfjacJ3h
初歩的な質問ですみませんが、わかるかた教えてください。

$a = 1;
$b = 0;

if ($a == 0)
if ($b == 0) print "a";
elseif ($a == 1)
if ($b == 0) print "b";
else
if ($b == 1) print "c";

上記のようなコードを実行すると、想定では「b」が表示されるはずだったのですが
何も表示されずに終了します。
$a = 1; $b = 1; とした場合も「c」が表示されません。
$a = 0; $b = 0; では想定通り「a」が表示されます。
なぜこのような動作をするのか教えて頂けないでしょうか。
0681nobodyさん2013/05/01(水) 04:11:57.11ID:???
まさかelseifがくっついてるからとか??
0682nobodyさん2013/05/01(水) 04:12:19.66ID:???
しらねえが括弧つけてくれ。
見にくすぎる。
0683nobodyさん2013/05/01(水) 04:27:00.83ID:???
if ($a == 0) {
 if ($b == 0) {
 }
} elseif ($a == 1) {
 if ($b == 0) {
 }
} else {
 if ($b == 1) {
 }
}

なんだこのクソみたいなコードは・・・

if ($a == 0 && $b == 0) {
} elseif ($a == 1 && $b == 0) {
} elseif ($b == 1) {
}
0684nobodyさん2013/05/01(水) 04:28:40.98ID:???
うおくっつけててもええんか、、
06856802013/05/01(水) 06:56:39.93ID:???
>>683のコードのように{}を入れると正しく動作します。。
理由がさっぱりです。。
if〜elseif〜else文のときは必ず{}を入れろということでしょうか?
0686nobodyさん2013/05/01(水) 08:55:31.76ID:???
>>670
やりたいことが分かった。
AddServerには、weightオプションがあるよ。
ABCをそれぞれ、321にしなさい。Weightの重い順にアクセスする。
weightがフラットだと、均等にアクセスするから、ABCのどれにアクセスするか分からない。
一度アクセスすると、CならCにずーっとアクセスする。でないと、結果が取れないでしょ?

あと、Daemon Toolsを調べなさい。落ちたmemcashedを自動的に再起動してくれる。
0687nobodyさん2013/05/01(水) 09:01:09.31ID:???
>>680

その式の解釈は

if ($a == 0)
{
if ($b == 0) print "a";
elseif ($a == 1)
if ($b == 0) print "b";
else
if ($b == 1) print "c";
}
だからです。 なんで elseif のが 一個目のifの受けだと思ったんです?
0688nobodyさん2013/05/01(水) 09:03:12.54ID:???
pythonerなんじゃね?
0689nobodyさん2013/05/01(水) 10:30:44.81ID:???
>>685
自分でコード追ってみりゃわかる
わからないうちは括弧入れよう(わかっても読みやすくするために入れるけどね)
インデントは読みやすくするために必須だけど、間違ったインデントに騙されないようにね。
06906802013/05/01(水) 12:46:23.79ID:???
>>687,689
有り難うございます。
そういうことでしたか。勘違いしてました。
ようやく理解できました。
0691nobodyさん2013/05/01(水) 15:51:42.82ID:???
俺も基本括弧は入れるな
括弧つけないのは

...
...
if ($FLAG === 0) echo "error";
...
...


こういう場合だけ
0692nobodyさん2013/05/01(水) 16:26:56.70ID:???
トラブルを起こさない書き方をする
これ常識ネ
0693nobodyさん2013/05/01(水) 16:32:05.68ID:???
リーダブルコードを10回読め
0694nobodyさん2013/05/01(水) 17:44:31.14ID:???
>>685
その認識レベルなら必ず括弧入れるべき。
面倒くさいのはわかるが括弧で区切りつけないと後々絶対同じような問題起こす。
0695nobodyさん2013/05/01(水) 18:50:59.11ID:???
>>683はどこへ
0696nobodyさん2013/05/01(水) 18:53:25.95ID:???
適当なエディタでインデントしなおせば分かりやすいかも。
たとえば、こうなった。
if ($a == 0)
    if ($b == 0) print "a";
    elseif ($a == 1)
        if ($b == 0) print "b";
        else
            if ($b == 1) print "c";
0697nobodyさん2013/05/01(水) 18:54:27.87ID:???
あー。。全角スペースでごまかしますorz

if ($a == 0)
  if ($b == 0) print "a";
  elseif ($a == 1)
    if ($b == 0) print "b";
    else
      if ($b == 1) print "c";
0698nobodyさん2013/05/01(水) 19:43:46.49ID:j59swQb1
オブジェクト指向で質問です
public $hensuu;
〜
〜
$hoge = "hensuu";
echo $this->$hoge;
として、$hogeに入ってる文字列でプロパティにアクセスしたいので、
存在しないプロパティを呼び出さないようチェックを入れたいのですがうまくいきません

if(property_exists($this, 'hensuu'))
ではtrueが返ってくるのですが、
if(property_exists($this, $hoge))
ですとfalseが返ってきてしまいます・・・
0699nobodyさん2013/05/01(水) 20:14:00.04ID:???
試したらtrueになってるけど。
そのコードどうなってんのよ。
0700nobodyさん2013/05/01(水) 20:20:42.60ID:???
$hogeに 'hensuu' が入ってないだけってオチに思える。
0701nobodyさん2013/05/01(水) 20:31:42.36ID:???
それ以前の問題として、プロパティは全部privateにしてメソッド経由で読み出せよ
そのメソッド中で変なプロパティ読み出さないようにチェックしれ
0702nobodyさん2013/05/01(水) 20:50:13.64ID:???
>>701
つ__get
0703nobodyさん2013/05/01(水) 23:56:42.39ID:iNKD91fw
error_reporting(-1);
とすれば全てのエラーを出力してくれますが、
このエラー内容を取得することは出来ますか?
エラーを画面上に表示させずに、エラー内容をテキストか何かに書き出して
おきたいと考えています。

標準出力ではなくテキストなどへの出力方法などあればアドバイスいただけないでしょうか。
0704nobodyさん2013/05/02(木) 00:30:53.74ID:???
>>703
error_get_last()

register_shutdown_function() と絡めてみるとうまくいく思う
0705nobodyさん2013/05/02(木) 00:33:05.62ID:???
っていうか、ログに吐き出したいだけか。
なら、 error_log() だな。
0706nobodyさん2013/05/02(木) 03:39:40.66ID:???
error_logは自作エラーメッセージをログに出力するもんだろ・・・
0707nobodyさん2013/05/02(木) 05:41:36.85ID:???
apache経由ならerrorログに出てるでしょ
0708nobodyさん2013/05/02(木) 05:49:01.99ID:PlTCCm2Z
Nagios のプラグインが使える監視ツールを作ろうと思っています。
そのプラグインの使用は、終了コードと標準出力にテキストを出すというものです。
exec 関数でやればいいようですが、処理の並列化のため、

exec ('/pathto/program > /dev/null &', $output, $return_var);

とすると、標準出力を得られません。何かいい方法はありますか?
ファイルにリダイレクトしてそれを読むのでしょうか?いやいや。
07097032013/05/02(木) 07:53:36.09ID:7Z0Os0eY
みなさん回答ありがとうございます。
回答をもとに対応してみたいと思います。
ありがとうございました。
0710nobodyさん2013/05/02(木) 08:21:52.96ID:???
>>708
いやいや。
0711nobodyさん2013/05/02(木) 10:52:24.02ID:???
>>708
何をしたいのか良くわからないが、ここが参考になるかもな。

PHPでプロセスを呼び出してパイプで繋ぐ方法
http://d.hatena.ne.jp/UDONCHAN/20101116/1289891757
0712nobodyさん2013/05/02(木) 13:41:47.39ID:???
カーセックス最高
0713nobodyさん2013/05/02(木) 15:03:31.48ID:???
>>708
標準出力捨ててんのに何がしたいのよwwwwww
非同期で標準出力取りたいなら、どっかのファイルにぶち込んで
別のプロセスでそのファイル監視し続けるしかないんじゃないの?
0714nobodyさん2013/05/02(木) 15:08:06.58ID:???
他言語のスレッドみたいな感覚で使いたいんだろうなあというのは伝わってくる
0715nobodyさん2013/05/02(木) 16:03:05.63ID:???
結局 nagios のソース読んだら、
fork して子プロセスで popen して読み取って、
ファイルに書き出してやがったですよ!
0716nobodyさん2013/05/02(木) 16:04:02.00ID:???
ぽぺん
0717nobodyさん2013/05/02(木) 20:20:16.22ID:???
ありがち
そして事態はより複雑に
0718sage2013/05/03(金) 07:54:54.79ID:???
上の方でも出てますがエラーを取得するのにerror_get_last()が使えるとありますが
複数のエラーが発生した場合は最後のエラーしかとれません。
エラーをすべて取得する方法ってありますか?
0719nobodyさん2013/05/03(金) 08:03:38.10ID:???
ログとれログ
0720sage2013/05/03(金) 08:59:40.30ID:???
レンタルサーバーでもログとか取れるもんなのでしょうか?
0721nobodyさん2013/05/03(金) 09:19:17.66ID:???
レンタル鯖っつったってphpとperlしか動かないものからOS自分で入れるものまで色々あるがよ・・・
0722nobodyさん2013/05/03(金) 12:58:19.36ID:???
apacheの生ログ見られる鯖はある
0723nobodyさん2013/05/03(金) 13:11:02.95ID:???
>>721
適当にあたりをつけて回答しろよ
なんでもヒントが出てくると思ってんじゃねーぞ
0724nobodyさん2013/05/03(金) 16:06:03.57ID:???
えっ
すみませんココ試験会場だったのですね間違えました
0725nobodyさん2013/05/03(金) 18:08:11.32ID:???
VMとかrootあるなら見れるとこ多いけど
普通のレンタル鯖だと生ログ見れるところはないと思う

phpとかPerlしか動かせない鯖だと全部のエラーをキャッチしておくってのは無理じゃないかな
0726nobodyさん2013/05/03(金) 18:23:59.04ID:???
>>725
wkey.meだけどユーザー毎のホームディレクトリにlogディレクトリがあってそこにログたまっていくぞ
0727nobodyさん2013/05/03(金) 18:54:53.52ID:???
レンタル鯖っていっても昔と違って数百円/月で仮想root付きのがあるからなぁ
0728nobodyさん2013/05/03(金) 20:24:59.12ID:???
仮想サーバほしいなら貸そうか?

なんつって
0729nobodyさん2013/05/03(金) 20:43:05.77ID:???
月1000円未満で借りられるVPSがたくさんあるのに、今時プログラマがレンタルサーバ
借りる理由ってなんだ?
0730nobodyさん2013/05/03(金) 20:46:04.14ID:???
管理がめんどくせえ
0731nobodyさん2013/05/03(金) 20:54:23.17ID:???
セキュリティも考えると全部管理すんのめんどくせーよ
0732nobodyさん2013/05/03(金) 21:34:09.24ID:???
節子、それレンタルサーバや

>月1000円未満で借りられるVPSがたくさんあるのに、今時プログラマがレンタルサーバ
0733nobodyさん2013/05/03(金) 22:30:55.67ID:???
クラウドで、サーバー立て放題
いまどき、負荷で他人に迷惑とか心配するようなのなんで借りるのか。
0734nobodyさん2013/05/03(金) 23:22:55.41ID:???
楽だから
0735nobodyさん2013/05/04(土) 01:24:08.92ID:???
>>732
レンタルサーバとVPSって別物だよ
まあごっちゃにしてる業者があるのかもしれんが
0736nobodyさん2013/05/04(土) 02:24:53.02ID:???
めんどくさいから、って大きな理由だよな。
0737nobodyさん2013/05/04(土) 04:30:06.34ID:???
>>735

借りられるVPSがレンタルサーバーではないだと!?
0738nobodyさん2013/05/04(土) 04:56:11.79ID:???
さすが連休だな
0739nobodyさん2013/05/04(土) 08:14:30.77ID:???
そういういみでいえばホスティングでもレンタルサーバーになるんだよな
0740nobodyさん2013/05/04(土) 15:34:13.29ID:???
レンタルサーバーって営業形態を指す言葉だろ
0741nobodyさん2013/05/04(土) 16:03:20.74ID:???
サーバを借りるって意味だろ
0742nobodyさん2013/05/04(土) 16:09:50.75ID:???
http://e-words.jp/w/E383ACE383B3E382BFE383ABE382B5E383BCE38390.html

語源や言葉の意味なんてころころ変わるもの
だいたいIT用語なんて確立した意味をもつものは少なく曖昧な意味が多い
下らない争いしてんじゃねえよ
729も用語無理して使うな(下手に曖昧なこというな)
732も意図理解しててあえて突っ込んでやるな
共用サーバって言いたかったんだろ
0743nobodyさん2013/05/04(土) 17:00:42.40ID:???
レンタルサーバもVPSもVPCも共用サーバといえるわな
0744nobodyさん2013/05/04(土) 19:34:20.11ID:???
物理的には共用サーバだが論理的には専用サーバとか
そういうたぐいのめんどくせー話はいらんわ
0745nobodyさん2013/05/05(日) 01:54:18.29ID:???
何にもめんどくさいないのに
0746nobodyさん2013/05/05(日) 01:55:09.42ID:???
ここ何スレ?
0747nobodyさん2013/05/05(日) 03:48:45.37ID:???
>>746
歴史板へようこそ
0748nobodyさん2013/05/05(日) 17:12:44.70ID:WrP9RIzV
db登録ユーザーが大別して2種類います。
IDの先頭にsenior(シニア)がつくユーザーと、つかないユーザーです。

senior102315
senior102516
112316
senior118311
120210
121653
・
・

seniorを削除して全ユーザのIDを数字のみにしたいのですが

UPDATE `table_ID` SET `field_ID` = REPLACE(`field_ID`,'senior','');

記述がどこか違っているのかわかりません。
一括削除の操作は別のコマンドを使うのでしょうか?
0749nobodyさん2013/05/05(日) 17:28:37.62ID:???
それdbの質問じゃ?
間違ってるようにみえないけど、試しに select してみ
SELECT field_ID , REPLACE〜 FROM 〜
とかさ
0750nobodyさん2013/05/05(日) 17:58:30.08ID:WrP9RIzV
スレが違うとのこと、すみません
そうそうに引き揚げますのでこれだけみてください
なぜ機能しないのでしょう
SELECT field_ID, REPLACE(`field_ID`,'senior','') FROM `table_ID`;
0751nobodyさん2013/05/05(日) 18:04:11.71ID:???
引き上げてねえww
0752nobodyさん2013/05/05(日) 18:09:18.89ID:???
ここで聞いてるってことは、phpから呼んでるんだよな?
機能しないってのは結果が0件とか?
エラー表示させるとか、一番単純なやつで結果見るとかしてみては
0753nobodyさん2013/05/05(日) 18:19:38.27ID:???
そもそも設計が悪いだろ
IDは数値のみでもってシニアかどうかはフラグでもつければいいのに
0754nobodyさん2013/05/05(日) 19:01:15.54ID:???
IDが重複して主キー制約に引っかかってるとエスパー
0755nobodyさん2013/05/05(日) 19:42:00.33ID:???
phpスレらしく全部selectして

$newid = preg_replace("/senior/","",$oldid);
$query = "update usertable set id = $newid where id = $oldid";

とかどうかな
0756nobodyさん2013/05/05(日) 19:46:29.03ID:???
>>753
設計したクソ野郎は既にどっか消えたとかよくある話
0757nobodyさん2013/05/05(日) 19:49:51.60ID:???
今は既存のDBに好きなカラム付け足したり
制約コロコロ変えたり拡張が簡単になってるんでそ
断片化が半端なさそうだが
0758nobodyさん2013/05/05(日) 20:02:15.57ID:???
昔はカラム追加できなかったんかw
0759nobodyさん2013/05/05(日) 20:18:14.45ID:???
できる範囲のことはDB側でやったほうがいいっていうけど
SQLの知識が足りないなら無理せず>>755みたいにPHP側に回せばいいだけだな
0760nobodyさん2013/05/05(日) 20:24:49.96ID:???
内容的にどうせ1回しかやらねー処理だし、足りない頭で変にクエリをあれこれ考えるよりphpでやっちまったほうが早いだろうな
0761nobodyさん2013/05/05(日) 20:26:34.38ID:???
クエリのほうが楽だろ
0762nobodyさん2013/05/05(日) 20:32:37.47ID:???
足りてる頭でやるならな
0763nobodyさん2013/05/05(日) 20:34:58.73ID:???
PHPが始めての場合
PHP→SQLって流れが一般的かと
そうするとPHPのほうが楽な人も多いと思う
0764nobodyさん2013/05/05(日) 22:44:00.67ID:???
>>760
そりゃお前がSQLの知識ないだけ
0765nobodyさん2013/05/05(日) 23:35:38.19ID:???
>>764
10人いたら9人分かるコードにしとかないと。
いまのところ2人でてきたしダメだろ。
0766nobodyさん2013/05/05(日) 23:54:57.58ID:???
SQLでできることをわざわざPHPを介して操作とかいくらなんでも馬鹿すぎる
0767nobodyさん2013/05/06(月) 00:18:24.18ID:???
まったくだ
アホばっか
0768nobodyさん2013/05/06(月) 00:23:13.86ID:???
>>748がスカタンだからそういう話になってんだろ
そりゃSQL自由自在に使える奴ならSQLでやったほうが早いに決まってる
0769nobodyさん2013/05/06(月) 00:37:03.05ID:???
そうでもない
0770nobodyさん2013/05/06(月) 00:37:36.77ID:???
>>765
無知w
■ このスレッドは過去ログ倉庫に格納されています