【PHP】下らねぇ質問はID出して書き込みやがれ 104
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/14(月) 16:45:59ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 103
http://hibari.2ch.net/test/read.cgi/php/1295956018/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0722nobodyさん
2011/03/09(水) 16:55:28.36ID:???グーグル先生が綺麗にサイトのデータ消したとかもあったよな
<a href="index.php?id=300&mode=delete">削除</a>
こんなことしてるやつ稀によく見かけるから注意な
0723。 ◆oDupeixhZv52
2011/03/09(水) 17:25:56.14ID:???普通にチェックして入れるの書こうよ…
0724nobodyさん
2011/03/09(水) 17:34:07.08ID:???PHP5.3から3項演算子の2番目が省略できるから、たぶんこれで出来ると思う。
けれども、ユーザ入力の部分なのに未定義チェックを含めたチェックがまったく
出来なくなるから、あまり薦められない。
こないだから来ているスマート君だと思うんだけど、ユーザ入力が絡む場合は
特にスマートさよりも堅牢性や確実性をとったほうがいいよ。スマートさを追求
してセキュリティホールを開けてしまっては目も当てられない。
0728nobodyさん
2011/03/09(水) 18:20:48.58ID:???0729nobodyさん
2011/03/09(水) 18:23:07.78ID:???可読性重視しろ
っていっても個々の好き好きだよな・・・。
ただ、
<?
?>
とか
<?=$value?>
は許せない
0730nobodyさん
2011/03/09(水) 18:30:01.38ID:???その略し方はshort_open_tagsがoffだったり、HTMLの頭にxml宣言があると面倒だよな。
0731721
2011/03/09(水) 19:29:38.08ID:???レスありがとうございます。
うーん、やっぱり例外が発生しないようにきっちり制御していったほうがいいみたいですね
3項演算子も試してみたけど、パターンが2種でなく3種になるとスマートとは程遠くorz
> こないだから来ているスマート君だと思うんだけど
おうふ、違いますん
0733nobodyさん
2011/03/09(水) 20:04:33.69ID:2uu1lCibご迷惑をおかけしております。
あれから更に色々と調べたのですがうまくできなくて困っています。
<?php
$str="$URL";
$encdata = urlencode($str);
?>
とやって、
<a href="http://google/test.php?url=$url">
の「$url」の部分がエンコードされるって考えは全く間違ってますでしょうか?
0734nobodyさん
2011/03/09(水) 20:08:10.77ID:???0735nobodyさん
2011/03/09(水) 20:14:24.38ID:???これは何のつもりなんだ
0736nobodyさん
2011/03/09(水) 20:22:58.71ID:2uu1lCib$strには$URLをエンコードした結果が入るつもりです。
0737nobodyさん
2011/03/09(水) 20:23:59.26ID:???0738nobodyさん
2011/03/09(水) 20:31:17.41ID:???IDを出す潔さが回答を生むのだ
0739nobodyさん
2011/03/09(水) 20:37:42.42ID:???<?php
$url = "http://www.google.co.jp/search?q=";
$searchStr = "おっぱい";
echo '<a href="' . $url . urlencode($searchStr) . '">Googleで' . $searchStr . 'を検索</a>';
0740nobodyさん
2011/03/09(水) 20:44:06.93ID:TtEEwLYN【PHPのバージョン】5.2
【連携ソフトウェア】MySQL
【質問内容】
PHPを使って、twitter検索で特定の文字を検索して(フォロワーだけじゃなく全体)
リアルタイムで流れてくるように表示したいんですが、
twitter APIは使用制限があるみたいで、更新しまくるとだめみたいなんです。
何か回避方法ありませんか?
ttp://twitterkensaku.com/
このサイトのような感じをベースに、検索した後はチャットのように見てるだけで勝手に流れるような仕組みにしたいです。
0741nobodyさん
2011/03/09(水) 20:44:10.71ID:???よくわからんがこれはPHPの外に書いてるのか?
もしそうなら$urlはPHPの変数なんだから
<a href="http://google/test.php?url=<?php echo $url; ?>">
ってしないと
ていうかサンプルいじるのはいいけど
HTMLと違って手探りでどうにかなるもんじゃないから
基礎はちゃんと勉強したほうがいい
>>3の本家マヌアルをなめるように見てきなさい
0743nobodyさん
2011/03/09(水) 20:50:37.94ID:TtEEwLYNぐぐったらなんとまぁw
事件に発展してるんですねw
MySQLを仲介に、一定時間ごとに一定数のつぶやきを確保して
PHPからMySQLに接続して疑似リアルタイムを実現するとかならいけますかね・・・?
0744nobodyさん
2011/03/09(水) 20:53:39.30ID:2uu1lCibわかる方ならすぐ試してレスできるのでしょうが・・・
勝手で申し訳ないのですが、これらを色々と試す時間をください。
返事は必ずしますm(_ _)m
0745nobodyさん
2011/03/09(水) 21:02:32.21ID:2uu1lCibそれでも「ぐーぐる」にマウスを置くと、URLは表示されるのです。
以下がソース全部ですがそれらしき箇所が見当たらないのです・・・
<?php
class DataObject {
function set($key,$value){
$valname = "_".$key;
$this->$valname = $value;
}
function get($key){
$valname = "_".$key;
return $this->$valname;
}
function output() {
if (isset($this->_filesize)) {
$this->imageOut();
} else {
$this->webOut();
}
}
function webOut() {
$url = $this->_url;
$title = $this->_title;
$summary = $this->_summary;
echo <<<EOM
<a href="$url">$title</a><br />
(続き以下)
0746。 ◆oDupeixhZv52
2011/03/09(水) 21:03:23.05ID:???表示ごまかすにしても、結局は
使用制限にかからないように取るしかないのでは。
http://twitter.com/account/rate_limit_status.xml
0747nobodyさん
2011/03/09(水) 21:03:43.51ID:2uu1lCibEOM;
}
function imageOut() {
$url = $this->_url;
$title = $this->_title;
$thumb_url = $this->_thumb_url;
$thumb_width = $this->_thumb_width;
$thumb_height = $this->_thumb_height;
echo <<<EOM
<a href="http://google/test.php?url=$url">ぐーぐる</a>
EOM;
}
}
?>
0748nobodyさん
2011/03/09(水) 21:08:01.35ID:???もっと基本からやらないと
0749nobodyさん
2011/03/09(水) 21:12:20.34ID:???マヌアル最低でも3回くらい読むべし。
ヒアドキュメントも出てくるし
0750nobodyさん
2011/03/09(水) 21:15:55.12ID:???仕様書見たけど、制限が60分に100回なら一分一回でも大丈夫じゃん
どの程度の頻度で新着があるのかわからないけど、
きちんとキャッシュ取って使えば問題ない
0752nobodyさん
2011/03/09(水) 21:23:32.65ID:2uu1lCib相当な難題だったんですね・・・
でも、まだ諦めたくないので調べながら
がんばってみたいと思いますm(_ _)m
0753nobodyさん
2011/03/09(水) 21:29:53.24ID:???そこに書いてあるコードを理解することは今は無理だろうし、
やろうとしてることはもっと簡単にできるはずだよ。
試行錯誤する前に、基礎を勉強しなよ。
0754nobodyさん
2011/03/09(水) 21:30:07.19ID:???0755nobodyさん
2011/03/09(水) 21:31:59.26ID:???htmlと違ってプログラムは適当にいじっても動かないよ
0756nobodyさん
2011/03/09(水) 21:33:44.69ID:???urlencodeの結果を使えばいいだけ。
0757。 ◆oDupeixhZv52
2011/03/09(水) 21:33:49.29ID:???$url = $this->_url; を $url = urlencode( $this->_url );
どうやろうが個人の自由だしな
0758nobodyさん
2011/03/09(水) 21:34:17.42ID:???みたいなのなら別だが、一般的に言って、プログラミングは勘でやってどうにかなるもんじゃない。
もしたまたまうまく動いても、あなたは多分ID:GqBXYpF1みたいなことをやらかすよ?
個々の関数の使い方がわからないんなら聞けば教えてくれるから、まず変数とかfor文とか、
PHP以前の「プログラミングの基礎」からやるべし。
あと、悪いが>>744もう「返事」しないでくれ・・・
0759nobodyさん
2011/03/09(水) 21:39:42.40ID:???0760nobodyさん
2011/03/09(水) 21:40:09.61ID:???0761nobodyさん
2011/03/09(水) 21:42:27.94ID:???ひさびさに感心した例えだ
0762nobodyさん
2011/03/09(水) 21:46:07.87ID:???0763nobodyさん
2011/03/09(水) 22:10:16.92ID:???それでも感心する人がいるんだから不思議なもんだ。
0764nobodyさん
2011/03/09(水) 22:15:06.27ID:???0765nobodyさん
2011/03/09(水) 22:17:21.22ID:???0767nobodyさん
2011/03/09(水) 22:21:16.44ID:TtEEwLYN>>750
新着は数秒置きにあるみたいですが、MySQLを仲介してAjaxも組み込めば
疑似リアルタイムが作れそうです。
回答ありがとうございました!
0768nobodyさん
2011/03/09(水) 22:24:05.57ID:???プログラミングと大工を比べるのは無理があるよ。
もしかしたらいまどきの大工は家を建てたあとで大黒柱を変えることが出来るのかもしれないけど。
0769nobodyさん
2011/03/09(水) 22:27:59.49ID:???0770nobodyさん
2011/03/09(水) 22:29:18.76ID:???犬をニャーと鳴かせるよりは全然喩え話として自然
0771nobodyさん
2011/03/09(水) 22:30:29.32ID:???0772nobodyさん
2011/03/09(水) 22:31:38.25ID:???0773nobodyさん
2011/03/09(水) 22:45:49.38ID:???0774nobodyさん
2011/03/10(木) 01:18:30.23ID:???そしてそれは決して少なくないのがホラーだよね
0775nobodyさん
2011/03/10(木) 03:53:28.78ID:???レーサー級のやつもいれば「アクセルどれ〜?」みたいなやつもいて玉石混交。
怖くて道歩けないw
・・・ということにもクライアントは気付かずry
0776nobodyさん
2011/03/10(木) 07:21:30.65ID:???$_SERVER['REMOTE_ADDR']
$_SERVER["REMOTE_ADDR"]
どれが正しいんだろう
激しく今更なんだが、一度気になったら眠れなかった俺のために頼む
0778nobodyさん
2011/03/10(木) 09:30:22.98ID:???なんか答えたくなったので
> $_SERVER[REMOTE_ADDR]
これ使ってる人たまに見るけどまずアウト!
""や''で囲ってないと定数として扱われる
定数として宣言されていない場合はそのまま文字列になるから問題ないんだけど
どこかで定数宣言define('REMORT_ADDR', 'test')とかされてるとAUT!
どこかでdefine('REMORT_ADDR', 'REMORT_ADDR')
> $_SERVER['REMOTE_ADDR']
一番ベターな方法かな
> $_SERVER["REMOTE_ADDR"]
""は中で変数展開ができるから
$addr = 'REMORT_ADDR';
$_SERVER["{$addr}"]とかするなら使ってもいいんじゃね?
0779nobodyさん
2011/03/10(木) 10:00:39.19ID:???0780nobodyさん
2011/03/10(木) 10:09:08.48ID:???getenvを使うべき
0781nobodyさん
2011/03/10(木) 12:36:11.94ID:voVG8He8【PHPのバージョン】5.2.4
【連携ソフトウェア】
【質問内容】
DBからレコードを取得して、値を変換して
テキストファイルに落としこむバッチを書いているんですが、
大小合わせて15MBほどのテキストをファイルをつくるのに
メモリを1200MBくらい消費してしまいます。
php.iniのmemory_limitが8MBやら512MBとかだと
当然バッチはメモリ不足でおっこってしまいます。
memory_limitを-1にするのは、
ちょっと怖い気もします。
色んなサイトを見るとPHPをバッチで動かすと
メモリの開放がされるのはバッチが終了してからとのことだったのですが、
たしかにunsetなどを使用してもメモリの使用量は減りませんでした。
memory_limitを-1にすることの是非と、
なにかメモリの解放をする方法があれば教えて頂けないでしょうか。
0782nobodyさん
2011/03/10(木) 12:40:15.52ID:???0784nobodyさん
2011/03/10(木) 13:23:09.73ID:???0785781
2011/03/10(木) 14:22:03.76ID:voVG8He8すみません。ソースの公開はちょっと厳しいです。
(一部抜粋できないかちょっと試してみます。)
memory_get_usageを使ってどのタイミングでメモリの使用量が増えているか
調べているのですが、
データベースからレコードを取得して
連想配列に値を入れ込むところで
消費量が増えてました。
10万件のレコードを連想配列に入れる処理で
500MB程使用量が増えました。
>>784
ですよね。1ギガは行き過ぎですよね。
ちなみに
memory_get_usageで取得できるメモリの使用量は
topコマンドで表示されるメモリの使用率と異なるようなのですが、
見かたがまちがってますか?
サーバにはメモリを8GB積んでいるんですが、
topでみるとPHPが15%弱使っているようなんです。
でもmemory_get_usageで得られる数値は700MB弱なので、
何の差なのかちょっと気味悪いです。
0786nobodyさん
2011/03/10(木) 14:29:10.41ID:???そのバッチって頻繁にデータ書き換わったりすんの?
しなければ、COUNTで件数取得して分割して試してみたら?
0787nobodyさん
2011/03/10(木) 14:32:35.71ID:???DBから引いてくるときに不必要なバイナリデータとかも
引いてきてイッパイイッパイになってるとか?
0788nobodyさん
2011/03/10(木) 14:33:59.22ID:???0789nobodyさん
2011/03/10(木) 14:36:18.58ID:???0790nobodyさん
2011/03/10(木) 14:40:06.10ID:???1,000,000キロバイトで1,000,000キロバイトは
1,000,000,000バイトでこれを10万で割ると
10,000バイトか。
500メガいくかな?いかなそうだな。
0792nobodyさん
2011/03/10(木) 14:45:09.90ID:voVG8He8はい。頻繁に変わるものになります。
頻繁に値が変わるのでテキストに書き込む対象を一気に持ってきてます。。。
>>787
不必要なバイナリですか。
たとえばどういったものが考えられますか?
SQLのなかでは、必要な分のカラムのみ
指定していますが、それとは別の話しでしょうか?
>>788 >>789 >>790
連想配列から通常の配列に入れるようにしたら
60MBほど使用量が減りました。
それでもまだ相当な消費量ですが・・・・。
0793nobodyさん
2011/03/10(木) 14:47:23.23ID:???オンメモリが必要かどうか考えるべきでは?
0794nobodyさん
2011/03/10(木) 14:56:32.26ID:???そんなにメモリ食わない感じですた。
for($i=1;$i<100000;$i++){
$hoge[] = "ああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああああああ
あああああああああああああああああ";
}
0795nobodyさん
2011/03/10(木) 15:00:25.34ID:???60メガ減ったのか
0796nobodyさん
2011/03/10(木) 15:05:13.31ID:???1レコードずつ処理すれば使うメモリは1レコード分で済むはずだけどな
0797nobodyさん
2011/03/10(木) 15:06:00.36ID:???for (;$i++<10;)echo str_repeat("あ", 100);
0798nobodyさん
2011/03/10(木) 15:06:52.61ID:???// $i=0; ←エラーがうざいならコメントを消せ
for(;$i++<10;)$hoge[]=str_repeat("あ",100);
0799nobodyさん
2011/03/10(木) 15:07:14.36ID:???// $i=0; ←エラーがうざいならコメントを消せ
for(;$i++<100000;)$hoge[]=str_repeat("あ",100);
0800nobodyさん
2011/03/10(木) 15:08:43.54ID:voVG8He8ですよね。
今から作りを変えて1行ずつ書き込む処理にしてみます。
0801nobodyさん
2011/03/10(木) 19:13:27.55ID:1kHolUfg踏んでもらう仕組みって法的に問題ある?
0803nobodyさん
2011/03/10(木) 19:45:11.27ID:Z6kki2tAいま、PHPとmysqlでウェブアプリを作ってて、フォーム送信からデータベースへの登録処理が失敗した時に
mail();(正確にはフレームワークのメソッドを通じてですが)で管理者向けに警告メールを送るようにしています。
流れとしては以下のような単純なものです
$rt = $dbObj->query("クエリ文");
if($rtを使ったエラー判別){//成功
//成功画面へ
}else{//失敗
//管理者向けmail送信処理&エラー画面へ
}
//このあと画面出力へ
これで、気になるのが、失敗時に画面の出力(正確にはフォームの送信前画面から失敗画面への遷移)に
ずいぶん時間がかかるんです。体感で1秒はかかっているような…
そこで質問させてください。
1)普通、phpでのメール送信ってこんなに時間かかるものなんでしょうか?
※ちなみにcentOSとPostfixとzendFWを利用しています
2)この時間の間にメール送信処理をしてるんでしょうが、この時間を少なくする方法はないでしょうか?
※メモリやCPUの強化でなく、プログラムのテクニックやアイディアで改善したいです。
単純なのは、エラー発生時のリアルタイムのメール送信をやめて、専用のログ出力をして、
利用者のUIと関係ないところで定期的にエラーログの確認&送信することでしょうが、
それだと速報性がなくなるので避けたいんです…
ご意見・アドバイス、よろしくお願いします
0804781
2011/03/10(木) 20:22:59.45ID:voVG8He8メモリの使用率がマックスでも32MBになりました。
おかげでメモリ不足で落っこちることもなくなりました。
どうもありがとうございました。
0805nobodyさん
2011/03/10(木) 21:25:15.97ID:kXpKnSNr}
スパム対策で紹介されてたコードなのですが
これをやると mbregex compile err: empty range in char class とエラーがでてしまいます。
どうしたらいいでしょうか
0806nobodyさん
2011/03/10(木) 21:41:33.45ID:???なんか使い方違わないか?
0807nobodyさん
2011/03/10(木) 21:42:59.44ID:???0808805
2011/03/10(木) 21:50:43.07ID:kXpKnSNrだったみたいです。すみません
>>806
サイト見たところコメ欄に
"[あ-ん]"だと"aあ"にマッチしない。
".*[あ-ん]"が良いかと。
これでいけそうです
>>807
この場合何を使ったらいいのでしょうか?
0809nobodyさん
2011/03/10(木) 21:52:30.56ID:???0811805
2011/03/10(木) 21:58:10.60ID:kXpKnSNrありがとうございます。
0812nobodyさん
2011/03/10(木) 22:25:32.86ID:???1)メール送信に1秒くらいかかるのは普通だと思う
2)お好きなのをどうぞ
・失敗画面にIFRAME等を入れて、そこからメール送信用のPHPをキックする
・失敗時にsystem関数等で、メール送信用PHPをキックする(コマンドの最後に & を付ける等)
予期しない事態が発生してエラーメールが1万通とか送信されると、そのせいで
更に別のエラーを併発したりするから、ちゃんとエラーログも取って、
前回メール送信日時も記録して、連続メール送信しちゃわない仕組みも作ったほうがいいよ
0813nobodyさん
2011/03/10(木) 22:55:42.34ID:???おまいらときたらwww
0815nobodyさん
2011/03/10(木) 23:54:02.48ID:???mb_ereg系は鬼車エンジン使ってるから日本語には特に強いよ
0816nobodyさん
2011/03/11(金) 00:01:04.17ID:???おおお、詳しい説明ありがとうございます。
後半部分の不測の事態への対処は全く思いつきませんでした
>>814さんの教えてくれたマルチスレッドという言葉で深く調べてみます
ありがとうございました
0817nobodyさん
2011/03/11(金) 02:36:54.34ID:OVVBlA4o文字コードをshift_jisに変えたら検索結果が表示されなくなったんだけどなんで??!!!!
だれか・・・・
たすけ・・て・・・
0818nobodyさん
2011/03/11(金) 02:52:20.65ID:???0819nobodyさん
2011/03/11(金) 03:06:49.81ID:OVVBlA4o・header("Content-type:text/html;charset=UTF-8");
と
・<META http-equiv="content-type" content="text/html; charset=UTF-8">
と
・メモ帳の保存の時にやるやつの3つでございます。
なんだかハマる予感・・・・・・
0820nobodyさん
2011/03/11(金) 03:37:54.53ID:6MwNb/os0821nobodyさん
2011/03/11(金) 03:53:30.73ID:???http://iup.2ch-library.com/i/i0260124-1299783070.png
上の画像の用に「1理者」となってしまいます。
コピペしたりソースを表示するとちゃんと「管理者」とですのですが
ブラウザ上での表示やはっぱりおかしいです。
沖縄や那覇等でも同じように先頭だけ文字化けする症状がでます
文字コードがUtf-8です
どなたか対処法を知っていたらお願いしますorz
■ このスレッドは過去ログ倉庫に格納されています