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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0438nobodyさん2011/12/15(木) 20:07:17.22ID:???
exec(~~~); の詳細を。
標準出力を nullかなんかにリダイレクトして & つけてる?
windows だったら execじゃダメ
0439nobodyさん2011/12/15(木) 20:09:19.52ID:TSU9Et/j
PHP のクラスについて質問です。
以下のように宣言した変数をさらにクラスメンバの宣言(?)で使いたいのですが、
'bar' => $piyo の部分がエラーになります。

class Hoge {
  public $piyo = 'piyo';
  public $foo = array(
    'bar' => $piyo
    // 'bar' => $this->piyo これもダメです。
  }
}

上記のように値を使い回したい場合どうすればいいでしょうか?
0440nobodyさん2011/12/15(木) 20:11:27.65ID:???
>>439
コンストラクタでやる
0441nobodyさん2011/12/15(木) 20:29:04.47ID:???
>>437
ノンブロックで行うとして、処理が成功したかどうかをしる方法はあるの?
0442nobodyさん2011/12/15(木) 21:12:38.85ID:3eA/ytGy
>>438
ありがとうございます

exec("/usr/bin/php {$execFile} {$params_exec} {$twitter_userToken} {$twitter_userTokenSecret} >/dev/null 2>&1");

{$execFile} 実行ファイル
{$twitter_userToken} パラメータ1
{$twitter_userTokenSecret} パラメータ2
という感じです
間違ってるんでしょうか?

>>441
すみません、恥ずかしいんですがノンブロックとはなんでしょう?
apiへの処理の成功の可否は、エラーコードをDBに登録するようにしてあります
0443nobodyさん2011/12/15(木) 21:14:07.20ID:8PBzw4Kx
$obj->{'value'};
      ↑このプロパティを { } で囲むのはどんな意味があるんですか?この記法に名前はありますか?
0444nobodyさん2011/12/15(木) 21:14:34.92ID:8PBzw4Kx
>>436
ありがとうございます!
0445nobodyさん2011/12/15(木) 21:30:57.86ID:???
>>442
>>438のいうとおり、&がついてないからだね。
ノンブロック(ノンブロッキング)ってのは、
何かの処理を行ったとき、その処理によってメインの処理がブロックされる/されない の意味で使われるよ。
同期/非同期みたいな。
0446nobodyさん2011/12/15(木) 21:44:25.15ID:???
>>445
>/dev/null 2>&1"); を  > /dev/null &"); に変更したら上手くいきました!
ノンブロックって言葉も勉強になりました、ありがとうございました
0447nobodyさん2011/12/15(木) 22:03:39.25ID:QbiaPFTg
URLの一番最後
member/register?codeのregisterってなんですか?
フォルダではないようなのですが
0448nobodyさん2011/12/15(木) 22:07:28.98ID:???
>>446
標準エラー出力は捨てないことにしたの?
0449nobodyさん2011/12/15(木) 22:18:40.03ID:???
>>447
ファイルだろうな
それ以外の可能性もあるけど、PHP と関係ないな

>>448
俺も思ったけど、話が PHP から逸れるからさ
>>446 は、標準エラー捨てるなら >/dev/null 2>&1 & と書きな
04504472011/12/15(木) 22:25:59.73ID:QbiaPFTg
>>449
すみません。apacheのrewriteruleの設定によるものでした。
おっしゃるとおりPHPに関係ないです
04514462011/12/15(木) 23:22:53.45ID:???
>>448,449
標準エラーってのは実行したスクリプトがエラー起こした時のエラーの返り値ですよね?
いらないから >/dev/null 2>&1 & が正しいわけですね
ちょっとまだよくわかってないことが多いみたいです、も少し勉強してみます。ありがとうございました
0452nobodyさん2011/12/16(金) 00:10:18.82ID:6sQrAgQt
settei.txt
5
1
<?php
$file = fopen("./settei.txt","r");
if ($file)
{
while (!feof($file))
{ $strBuf = fgets($file,1024);
$i++;
if ($i == 1){ $a = $strBuf / 100; }
else
{ $b = $strBuf; }
}
fclose($file);
}
else
{ die("open-err"); }
echo $a."<br>".$b;
?>
出力結果0.05
$bが表示されません。なぜでしょうか。教えてください
0453nobodyさん2011/12/16(金) 00:53:21.84ID:???
>>452
やってみたら出たよ
0454nobodyさん2011/12/16(金) 01:15:32.83ID:6sQrAgQt
>>453
>>452をコピペしたけど0.05は表示されるけど<br>も出力されてる。「1」は表示されません。
PHP Version 5.2.6-1
「1」はtrueと解釈されてるとか
0455nobodyさん2011/12/16(金) 01:16:51.05ID:???
>>454
それはない
0456nobodyさん2011/12/16(金) 01:28:30.57ID:???
>>454
settei.txtがなんかおかしいんでは?
04574522011/12/16(金) 01:29:04.38ID:6sQrAgQt
多分原因が分かりました。テキストエディタemacs23を使っているのですけど、settei.txtで3行目を
作らなかったのに上書き保存するとemacsのカーソルが3行目に移動できるようになってしまいます。
3行目ができた?ということなのかな?
0458nobodyさん2011/12/16(金) 01:38:12.17ID:???
>>457
ほうほう、それで?
04594522011/12/16(金) 01:53:56.17ID:6sQrAgQt
>>458
上書きでsettei.txtの3行目が出現したとすると$iが3になってsettei.txtの3行目の空文字?で
$bが代入されるので表示されないと思う。
ので、この書き方はせず、行を1行ずず読み込んで配列にして配列のキー0は$aに、キー1は$bにと
したほうがいいとおもいました。
0460nobodyさん2011/12/16(金) 02:04:30.27ID:???
>>459
うむうむ、それで?
04614522011/12/16(金) 02:12:35.46ID:6sQrAgQt
寝るので明日考えます。ありがとうございました。
0462nobodyさん2011/12/16(金) 02:43:47.71ID:???
いいってことよ
0463nobodyさん2011/12/16(金) 03:08:43.93ID:???
>>427
このsmartyはつっこんでいいのか?
0464nobodyさん2011/12/16(金) 03:25:19.33ID:???
使うこともあるだろ
0465nobodyさん2011/12/16(金) 05:01:14.15ID:???
完全にsmartyは仲間はずれだろ
他は言語で、一個だけテンプレートエンジンって
0466nobodyさん2011/12/16(金) 06:18:27.22ID:???
apacheは言語なのか
html css sqlあたりはプログラム言語ではないわけだが
ただ知ってる単語を列挙しただけって見ればわかるでしょう
0467nobodyさん2011/12/16(金) 06:19:51.42ID:???
domとecmascriptも入れておくれよ
0468nobodyさん2011/12/16(金) 06:21:19.23ID:???
正規表現で、u(UTF-8)とm(マルチライン)は使わない方がいい。
理由は、UTF-8でないと認識されると検索がストップする、文頭、文末の認識が確実でない。
UTF-8の文書であってもu(UTF-8)を付けずにバイナリデータとして検索はできる。
0469nobodyさん2011/12/16(金) 06:40:16.01ID:???
それならu付けるのは良いってことじゃね
0470nobodyさん2011/12/16(金) 07:08:39.26ID:8Mabj+H2
巨大な配列どうしの共通部分を短時間で求める方法はありますか。
個数は数万個〜数十万個とかです。
バイナリデータとしてディスクに格納されているケースもあります。
0471nobodyさん2011/12/16(金) 07:45:08.76ID:???
>>470
array_intersect
0472nobodyさん2011/12/16(金) 15:14:56.28ID:???
>>470
配列がディスクに格納されているとか意味不明
0473nobodyさん2011/12/16(金) 15:34:29.21ID:???
そこでHadoopですよ
0474nobodyさん2011/12/16(金) 17:46:35.62ID:???
オーバーロード使えなくてイラっとしたから書き込みますね
0475nobodyさん2011/12/16(金) 17:50:07.08ID:???
>>466
面倒くさいツッコミwww
0476nobodyさん2011/12/16(金) 19:04:57.86ID:???
PHPとあんまり関係ないかもしれませんが

ユーザー同士のメッセージのやり取りを
最新20件くらい表示するだけで、保存先はファイルにしようかなと考えています。
DBだとレコード数がすごくなりそうなんで、ユーザーが増えたら読み込みが大変になるかなと。
で、ログ解析やバックアップ用にDBにも入れようかなと。

Cache_Liteを使って、ファイルとして利用しようかなと思っているのですが
このやり方以外にいい方法ってありますか?

よろしくです
04774762011/12/16(金) 19:06:17.04ID:h9+fuNNV
あ、ID出してなかった
0478nobodyさん2011/12/16(金) 19:30:20.93ID:???
余裕で数千万件とかいく感じ?
04794762011/12/16(金) 19:48:10.33ID:h9+fuNNV
会員数が現状数万人いるんですが、長い目で見てそうしようかなって感じです
0480nobodyさん2011/12/16(金) 19:59:45.62ID:jjdr3xuV
こんなディレクトリ構造が一番。キャッシュライトでさえアクセス多ければ負荷が増える。

日付/ID/レベル1のGZファイル
0481nobodyさん2011/12/16(金) 20:05:50.06ID:jjdr3xuV
2ch掲示板なんかも、"板/スレ"でそのままファイルとして記録してるだろ。
データベース使うと照合やロックに手間・負荷が掛かる。
一ファイルごとなら他のファイルまでアクセス待ちなど起こらない。
0482nobodyさん2011/12/16(金) 20:24:26.80ID:???
変更や削除が超めんどくさいけどな。
それしないなら、まあ良いんじゃね?
04834762011/12/16(金) 20:56:25.74ID:h9+fuNNV
すいません。説明不足でした。
メッセージ書き込みと同時に、ファイルとDBと両方に入れようかなと思ってます。

AからBへのメッセージ書き込みがあった場合
→Aの送信ファイルへ書き込み
→Bの受信ファイルへ書き込み
→DBへINSERT(ファイルが壊れた時のバックアップ用)

なので基本、メッセージの読み込みはファイルのみです。
ファイルへの書き込み時に、Cache_Liteを使おうかなという感じでした。
ま、ただ単にいろいろ機能があって、楽かなと思ったので。

>>480
>日付/ID/レベル1のGZファイル
こんな感じのディレクトリ構造は、Cache_LiteでもOptionで実装できるんで
2階層くらいにしようかなと思ってます。

fileを作成・更新を普通に作ったほうがいいですか?
0484nobodyさん2011/12/16(金) 20:57:13.63ID:???
数万人のカキコをDB無しで管理するのか 漢だね
0485nobodyさん2011/12/16(金) 21:04:07.31ID:???
SELECT 送信者,受信者,時間 FROM カキコログ WHERE 送信者=A LIMIT 20 ORDER BY 時間
みたいな感じで出力したほうが管理楽そう
0486nobodyさん2011/12/16(金) 21:09:36.77ID:???
>>484
設計が大変だけどできてしまえば管理はむしろ楽じゃないか?
0487nobodyさん2011/12/16(金) 21:19:00.96ID:???
オレだった あれこれ言ってる間で両方作っちゃうけどな
テスターはVIPの有志にやってもらう
0488nobodyさん2011/12/16(金) 21:20:35.61ID:iBDY3MbI
phpからMySQLのgrant文って発行できない?
$sql = "grant all privileges on test_db.* to test_user@'localhost' identified by 'test_pass'";
$ret = mysql_db_query("localhost",$sql);
こんな感じにしてみたけど
Unknown database 'localhost'
ってエラーになってしまう。

0489nobodyさん2011/12/16(金) 21:26:57.94ID:???
もっとカッコイイDB名にしようぜ>>488
0490nobodyさん2011/12/16(金) 21:44:16.48ID:???
>>484
検索したり検索結果をソートしたりするにはDBはいいけど。
たとえば動画や画像はデータベースに入れないだろ。
なんでもDBにいれればいいわけではない。
0491nobodyさん2011/12/16(金) 21:51:10.07ID:???
>>481
テーブルロックするわけじゃあるまいし。
ファイルアクセスならアクセス待ちが起こらないってのもへんな話。

まぁ、会員が数万人なら、長い目で見ても10億件くらいでテストすればいいんじゃないか?
んで、DBとファイルとどっちがよいかを検討すればよい。
俺ならDB
0492nobodyさん2011/12/16(金) 21:58:00.47ID:???
>>490
グーグルマップもDBにいれてしまってゴメンナサイゴメンナサイ
0493nobodyさん2011/12/16(金) 22:12:34.91ID:???
検索、ソートに関与しない(バイナリ)データまで入れる必要がない。
ファイルへのパスやURLだけ追加しとけば十分。
0494nobodyさん2011/12/16(金) 22:16:17.15ID:iBDY3MbI
>>489
そういうことか。
$ret = mysql_db_query("localhost",$sql);

$ret = mysql_db_query("mysql",$sql);
で出来ました。
マジ感謝です。
04954762011/12/16(金) 22:21:39.60ID:h9+fuNNV
なんか質問以外の話になってきたので、クローズさせていただきます
ありがとうございました。
0496nobodyさん2011/12/17(土) 00:29:21.58ID:???
お前のスレじゃない。勝手にクローズとか宣言するな
0497nobodyさん2011/12/17(土) 01:25:40.44ID:bKvSYMrD
正規表現の質問です。
文末から逆順で正規表現の検索はできますか?
0498nobodyさん2011/12/17(土) 01:40:44.00ID:???
>>497
正規表現 Part9
http://hibari.2ch.net/test/read.cgi/tech/1323566370/
0499nobodyさん2011/12/17(土) 06:03:16.70ID:???
サーチ系のポジション設定で負数Nを指定したら0〜strlen-Nの範囲になるが、
preg_matchだとstrlen-N〜strlenになる。
0500nobodyさん2011/12/17(土) 14:32:17.37ID:???
それがどうした
0501nobodyさん2011/12/17(土) 15:56:48.17ID:???
ぱくられてんぞ
【MySQL】下らねぇ質問はID出して書き込みやがれ 2
http://toro.2ch.net/test/read.cgi/db/1322402682/
0502nobodyさん2011/12/17(土) 16:11:17.20ID:bPlXPOXm
配列Aと配列Bをマージする時に、重複する値は除外するという関数はありますか?
つまり、以下を1つの関数で行えますか?(キーは保持しなくてよいです)

$arr_c = array_merge( $arr_a, $arr_b );
$arr_c = array_unique( $arr_c );
0503nobodyさん2011/12/17(土) 16:30:23.23ID:???
遅くて困ってるわけじゃないならそれで
0504nobodyさん2011/12/17(土) 16:49:55.12ID:bPlXPOXm
それで行こうかと思ったら、タイムアウトしました。
10万くらいの配列が元で、1万ぐらいの配列からarray_diffしたら止まりました。
そもそも無茶だったかな?
0505nobodyさん2011/12/17(土) 16:54:38.98ID:sPFPpSkQ
SSLでアクセスした場合$_SERVER["REMOTE_ADDR"]がサーバーのIPになってしまうのですが
他にクライアントIPを取得する方法はありますか?
0506nobodyさん2011/12/17(土) 17:12:37.51ID:???
>>504
キーを捨てていいとのことなので、ハッシュのキーにしてしまうのではだめかな
0507nobodyさん2011/12/17(土) 17:17:06.38ID:???
>>505
Windows?
0508nobodyさん2011/12/17(土) 17:23:45.16ID:sPFPpSkQ
>>507
SSLとphpはcoreserver (xrea)に設置してます
検索したところサーバーのIPになるのは正常みたいですが・・
0509nobodyさん2011/12/17(土) 19:36:32.56ID:A5TEnh+5
log4phpで
"Undefined index: log4php.threshold"とでます
0510nobodyさん2011/12/17(土) 20:48:58.19ID:???
そうですか
0511nobodyさん2011/12/17(土) 21:58:06.60ID:???
つまりlog4phpで
"Undefined index: log4php.threshold"と出るんですね?
0512nobodyさん2011/12/17(土) 22:59:33.09ID:???
>>509
貴重な情報提供ありがとうございます
これで世界のプログラマは救われるまずです
0513nobodyさん2011/12/17(土) 23:50:37.11ID:D3Nl9AMj
原因と解決方法を聞いているのですが。
0514nobodyさん2011/12/18(日) 01:39:49.23ID:???
なんの原因と解決方法?
それ書かなきゃ分かんないよ。
0515nobodyさん2011/12/18(日) 04:48:11.98ID:???
>>514
log4phpで
"Undefined index: log4php.threshold"とでます
原因と解決方法を聞いているのですが。
0516nobodyさん2011/12/18(日) 05:01:32.77ID:???
>>515
>>1
05175052011/12/18(日) 05:09:47.88ID:KlBUbzzu
どなたかお願いしますm(__)m
0518nobodyさん2011/12/18(日) 06:27:11.95ID:r5XCNL9M
>>506
アイデアありがとうございます!
つまり、キーと値を入れ替えるといったことでしょうか?
0519nobodyさん2011/12/18(日) 08:55:46.14ID:TZzNKfzx
foreach ($all->page->item as $item) {

とforeachの中で変数に$allの中身を展開していて、
中身のほとんどはひとつの変数にひとつのデータが入ってるんですが、
ひとつだけ$item->categoryは中身が配列なんです

こういう場合、

$category = $item->category;

では配列の先頭のひとつしか取り出せないのですが、
うまいことやり方はないでしょうか

【PHPのバージョン】5.3
0520nobodyさん2011/12/18(日) 09:30:46.68ID:???
まず、入れ子にしてみます
foreach ($all->page->item as $item) {
    if (is_array($item)){
        foreach ($item as $valeu) {
        $echo $valeu;
        }
    }
}
次に「動けこのポンコツマシン」と叫びながらenterキーを押します
0521nobodyさん2011/12/18(日) 10:03:02.25ID:3BlI9Ok7
【OS名】windows7
【PHPのバージョン】5.2.0
【質問内容】
サイトを参考にしながらtwitterのbotを作っているのですが、
Notice: Trying to get property of non-object
というエラーが出て困っています。
該当箇所は
$timeline = $Bot->Get_TL("home_timeline",$since_id,50);
で、Get_TL関数は
function Get_TL($type,$sid = null,$count = 30){
$opt = array();
$opt['count'] = $count;
if($sid){$opt['since_id'] = $sid;}
$req = $this->Request("statuses/".$type.".json","GET",$opt); // JSON形式の方がちょっと扱いやすい
if($req){
if($req->Code != "200"){die("Error: ".$req->Code);}
$result = str_replace(":NULL,",':"NULL",',$req->Body);
} else {die('Get_TL(): $req is NULL');}
$result = json_decode($result);
if($result->error){die($result->error);}
return array_reverse($result);
}
こんなかんじです。
エラー内容を調べたところNULLの扱いが良くないみたいなんですが、どういうふうに直せばいいか検討が付きません
ご教授願います
0522nobodyさん2011/12/18(日) 10:07:55.46ID:TZzNKfzx
>>520
できました
ありがとうございます
0523nobodyさん2011/12/18(日) 10:42:16.96ID:???
>>521
echo "ガッ";

>>522
スクリプトがちゃんと動いたら 「よーし いい子だ」 のセリフも忘れないようにしましょう
0524nobodyさん2011/12/18(日) 11:19:49.11ID:???
>>521
$Botにインスタンスがちゃんと入ってない
0525nobodyさん2011/12/18(日) 11:58:40.87ID:3BlI9Ok7
>>523
巧妙なぬるぽしてましたか私…\(^o^)/

>>524
えーっと、
class Twitter_Bot{}
の中に先ほどのGet_TL関数がはいっていて、
$Bot = new Twitter_Bot($user,$consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret);
と宣言してるんですが、これではダメでしょうか…?
というかこういうことじゃなかったらすいません
0526nobodyさん2011/12/18(日) 12:00:59.32ID:3BlI9Ok7
>>524
すいません追記です。
function Twitter_Bot($usr,$consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret){
$this->user = $usr;
$this->TO = new TwitterOAuth($consumer_key,$consumer_secret,$oauth_token,$oauth_token_secret);
$this->times = array_sum(explode(" ",microtime()));
}
もいれてます。
0527nobodyさん2011/12/18(日) 12:17:24.87ID:???
>>526
コード全部とエラーメッセージをあげたほうが早いかも
0528nobodyさん2011/12/18(日) 12:17:36.17ID:???
Notice: Trying to get property of non-objectでぐぐったら面白いページ見っけた
http://www.city.hitachi.ibaraki.jp/viewer/list-notice.html
コメントの入ってない古代兵器のリプレイスはイヤでござる
0529nobodyさん2011/12/18(日) 12:32:55.35ID:3BlI9Ok7
>>527
かなり長いのでちょっと無理です…。
もっと勉強して出直します

>>528
日立市になにが起きてるんでしょうか…
0530nobodyさん2011/12/18(日) 12:41:02.98ID:???
日立市ワロタ
職員がきっと作ったんだな
0531nobodyさん2011/12/18(日) 13:01:28.97ID:???
委託したWEB屋が納期優先でフレームワークやライブラリ使って納品
                ↓
  phpがバージョンアップとかセキュリティホール発見とか
                ↓
フレームワークの開発者が行方不明で対応しない OR
WEB屋が行方不明で対応できない
                ↓
          他のWEB屋に発注
                ↓
          なんとか動いてる状態

ネットバブルの遺産であり 仕事のタネ
0532nobodyさん2011/12/18(日) 13:03:30.75ID:???
>>529
頑張って
0533nobodyさん2011/12/18(日) 21:02:41.90ID:WFHhC1hO
すみません、質問させてください
cURL等にてFlashコンテンツ(動画とか音声とか)を取得したいと思うのですが、可能なのでしょうか?
対象のHTMLソースを確認してもアドレスなど指定方法が分かりません
画像なんかのように簡単にはいかないと思いますが、どのようにすればいいのでしょうか?

0534nobodyさん2011/12/18(日) 21:05:38.00ID:???
っ F12
0535nobodyさん2011/12/18(日) 21:06:20.40ID:???
ブラウザが取得できるんだから可能でしょ
0536nobodyさん2011/12/18(日) 21:15:53.47ID:WFHhC1hO
以下のURLは例えばとして挙げるのですが、
http://www.cbsnews.com/
は普通に
http://www.cbsnews.com/common/includes/CBSNews_v2_Remote.swf
のように書いているので取得できそうですが(今プログラミング出来る環境にいないので試せないのですが)、
http://www.nhk.or.jp/gogaku/english/business2/index.html
これなんかはサッパリ解決法が分かりません
どのような指定をすればいいんでしょうか?
ただ単にcURLにてこのページを全部取得するだけではFlashコンテンツは取得できないと思うのですが
0537nobodyさん2011/12/18(日) 21:34:30.67ID:???
PHP関係なくね
0538nobodyさん2011/12/18(日) 21:50:09.44ID:???
PHPと関係ない
プログラムとも関係ない
取得手順の自動化部分だけなら関係ある
■ このスレッドは過去ログ倉庫に格納されています