トップページ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等)・フレームワークは各該当スレへ
0402nobodyさん2011/12/14(水) 20:36:40.65ID:17jEiayv
phpのsession時間はどこで指定するのですか?
管理単位はなんですか?IPですか?
0403nobodyさん2011/12/14(水) 20:42:42.09ID:???
っつーかw
0404nobodyさん2011/12/14(水) 20:43:12.74ID:???
>>402
管理単位はセッションID
04053452011/12/14(水) 21:01:41.08ID:QUjeWNXA
つーか、mb_convert_encoding($arr_str[1], "SJIS","EUC"); をソースの流れの色々なところに
置くと、色々かわりますねw
表示は文字化けですが、ファイルの方は日本語表示出来ました、ありがとうございました。
0406nobodyさん2011/12/14(水) 21:09:33.23ID:???
つーかPHPってめんどくさいっすね
04073452011/12/14(水) 21:30:24.42ID:QUjeWNXA
file_get_contents()関数で、
$url="http://kohada.2ch.net/test/read.cgi/php/1322564127/";
file_get_contents($url);
みたいな方法で、順番に、ネットのページをダウンロードしています。
ところが、このやり方だとすぐタイムアウトするのか、
10ページぐらいでfile_get_contents()がエラーを吐きます。
この用途に使える、file_get_contents()より緻密な設定が出来る関数はないでしょうか?
0408nobodyさん2011/12/14(水) 21:42:57.79ID:???
タイムアウトしてんの?
04093452011/12/14(水) 21:47:23.87ID:QUjeWNXA
>>408
Fatal error: Maximum execution time of 30 seconds exceeded in
すみません、phpのループの設定だった。
04103452011/12/14(水) 21:48:32.82ID:QUjeWNXA
http://pentan.info/php/30timeout.html
これみたい。
0411nobodyさん2011/12/14(水) 22:06:44.80ID:Ur9qSeou
何かの個数を表すとき何て名前にしてますか?
number_of_comments だとちょっと長いかな
0412nobodyさん2011/12/14(水) 23:47:05.88ID:???
>>411
$comment_count かなあ
$comments でもいい気がしたけど、これだとコメントが詰まった配列みたいだし
よく使う変数なら短くしたい $come_count とかさ
意識はしてないけど、「$変数の対象_変数の用途や型」って書き方してる
まあ、数えるものが限定されているなら $count でもいいかな
0413nobodyさん2011/12/15(木) 00:50:50.57ID:???
つーかスレチ
http://toro.2ch.net/test/read.cgi/tech/1311942721/
0414nobodyさん2011/12/15(木) 01:22:22.03ID:???
>>407
まず何のエラーか調べなさい
ヒント:$http_response_header
04153452011/12/15(木) 02:24:51.02ID:nOE9twus
>>414
どうもです。 あれはphpのループの設定で解決しました。
つか、文字列から↓の記号を排除する関数、ってどこかにないでしょうか?
↓の記号が出てきたら、空白に置き換えるでも、削除するだけでも、どんなんでもかまいません。

Windowsのファイル名に使えない文字。
\/:*?"<>|
0416nobodyさん2011/12/15(木) 02:37:01.83ID:???
preg_replace
04173452011/12/15(木) 02:51:10.82ID:nOE9twus
>>416
おー、どうもありがとうございます。
04183452011/12/15(木) 06:29:31.80ID:nOE9twus
>>276
ってことは、PHPで検索エンジンを作ろうとした場合、DOMを使うといい、ってことなのでしょうか?
04193452011/12/15(木) 06:33:42.81ID:nOE9twus
$title = ereg_replace("/","・",$title);
と書くと、
Deprecated: Function ereg_replace() is deprecated in C:\xampp\htdocs〜〜
が出るのですが、正しくはどうすべきでしょうか?
04203452011/12/15(木) 07:13:00.67ID:nOE9twus
しかし、こういうプログラミングは、うまく動けば天にも上る気持ちになるけど、
動かないと絶望のどん底に落ち込むから、トータルでは健康に悪いんじゃないですかね?w
04213452011/12/15(木) 07:16:20.70ID:nOE9twus
しかし、サイトを作ろうとすると、
html、css、php、ジャバスクリプトをマスターしなければならないんだけど、
こんなの1人だけでやってる人いるんですかね?
0422nobodyさん2011/12/15(木) 07:37:15.25ID:???
いい加減にしろ
0423nobodyさん2011/12/15(木) 07:39:28.13ID:???
もう、専用スレでも立ててくれ。
君だけのスレじゃないから
0424nobodyさん2011/12/15(木) 08:28:16.45ID:???
おはよぉ〜

 PHPプログラマ〜のお姉さんだよぉ〜
 今日はどんな質問が残ってるのかな?
0425nobodyさん2011/12/15(木) 12:46:01.86ID:Ddg6IIc7
お姉さん・・・ふぅ〜
0426nobodyさん2011/12/15(木) 12:51:34.48ID:???
>>421
腐るほどいる。
0427nobodyさん2011/12/15(木) 16:19:29.00ID:uDMRC9vi
>>421
さらにいうなら

html
css
php
Java script
action script
sql
perl
apache
smarty

覚えることが多すぎるのがWEB
0428nobodyさん2011/12/15(木) 16:33:58.87ID:???
たいへんだけど、むしろそこが楽しい
0429nobodyさん2011/12/15(木) 16:40:26.23ID:BuhzkLXW
楽しいけど、むしろそこがたいへんだ
0430nobodyさん2011/12/15(木) 16:55:14.47ID:IwZ5fbUN
<form method="post" action="<?php $_SERVER['PHP_SELF'];?>">
<?php
echo "<input type='submit' name='del[9294]' value='削除'>";
echo "</form>";
echo "<br>";
if($_POST){
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "<br>";
echo $_POST['del[9294]'];
}
?>
出力結果
Array
(
[del] => Array
(
[9294] => 削除
)

)
Notice: Undefined index: del[9294]

$_POST['del[9294]']で取り出すのかと思ってたら多次元配列になるとか聞いてないよー
0431nobodyさん2011/12/15(木) 17:01:15.77ID:???
ラジオボタンというものがあってだな
0432nobodyさん2011/12/15(木) 17:05:38.43ID:???
×ラジオボタン
○チェックボックス
0433nobodyさん2011/12/15(木) 17:14:02.71ID:???
>>431-432
用途次第で、buttonもcheckboxもradioもhiddenもありうるだろう。
取得値が多次元配列になるのは同じ。
0434nobodyさん2011/12/15(木) 18:10:55.11ID:???
仕様です
0435nobodyさん2011/12/15(木) 18:18:27.02ID:8PBzw4Kx
\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f 形式(ユニコード?)をデコードする方法を教えて下さい!

0436nobodyさん2011/12/15(木) 18:39:23.54ID:???
$str = "\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f";
print json_decode("\"$str\"");

utf8以外ならその後変換して
0437nobodyさん2011/12/15(木) 19:56:58.41ID:3eA/ytGy
バックグラウンド処理について質問です。php5.3.8です
今、webアプリで3つのSNSのapiに文章をポストする仕組みを作ってるんですが
フォームの送信ボタンを押した後、apiへのアクセスと投稿部分は時間がかかるため
exec()でバックグラウンド処理させました。が、それでも時間がかかりすぎる気がします
時間の捕捉方法は以下の通りです

$session->starttime = date("Y-m-d H:m:s");
funcImageUpload(~~~);//写真アップロード
funcQuery(~~~);//DBクエリ
exec(~~~);//apiへの投稿
$session->endtime = date("Y-m-d H:m:s");

この状況で処理時間が
○テキストのみ投稿
 ・exec();をコメントアウト:1秒
 ・exec();を実行:3秒
○テキストと写真を投稿
 ・exec();をコメントアウト:3秒
 ・exec();を実行:9秒

いくら3つもapiにアクセスしてるからって3秒とか9秒は時間かかり過ぎじゃないでしょうか?
バックグラウンド処理=一瞬で済むものだと思ってたのですが違うんでしょうか
exec();自体初めて利用した処理なのでおかしい点があるとしてもわかりません
初心者にありがちな穴などあるんでしょうか?
または、高速化する方法を教えてもらえると嬉しいです
すみませんがアドバイスお願いします
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/
■ このスレッドは過去ログ倉庫に格納されています