【PHP】下らねぇ質問はここに書き込みやがれ 54
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/09/09(日) 12:42:57ID:64tYOx8RPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0588nobodyさん
2007/09/19(水) 19:11:28ID:???0589nobodyさん
2007/09/19(水) 19:37:54ID:???0590nobodyさん
2007/09/19(水) 19:56:01ID:???0592nobodyさん
2007/09/19(水) 20:27:02ID:???レスポンス差を生んでしまうならそれはかなり大きな問題だと思うがな。
体感で分からんとか言ってるやつは、その0.1秒の差が
サーバーが対応可能な秒間アクセス数を確実に決定付けるという
高負荷サーバーのチューニングとかやったことないレベルの人だろう。
>>586
1番遅い結果が出た $test[abc] はPHPの処理でかなり遅い
シンボルの検索をやるのが致命傷なんだろう。
リファレンス使った参照渡しとかもこれが原因で処理遅いんだよな。
0593nobodyさん
2007/09/19(水) 20:28:43ID:???> for($i=0; $i<=300000; $i++){ if($test["ke$y"] == 'ghi'); }
> for($i=0; $i<=300000; $i++){ if($test['ke'.$y] == 'ghi'); }
この辺が遅いのは内部的にメモリのリアロケーションが発生するせいかね。
0594nobodyさん
2007/09/19(水) 20:31:34ID:???チューニングとはボトルネックになっているとわかってから
効果がある場所にかぎってやるもの。
すべての箇所でやるもんじゃない。
0595nobodyさん
2007/09/19(水) 20:44:49ID:???こういうこと言う奴はどうしようもないよな
その程度の負荷をチューニングするくらいならもっと元気のいいCPUにかえたほうがスマートなやり方
次にアルゴリズムとかデータ構造見直すとかした後の話だろ、カーネル再構築とか微妙なチューニング云々は
0596nobodyさん
2007/09/19(水) 20:47:09ID:???0597nobodyさん
2007/09/19(水) 20:47:18ID:6jpSclPOで、magic_quote_gpcがオフにならないのですが、何が原因なのでしょうか・・・。
0598597
2007/09/19(水) 20:53:07ID:6jpSclPO文字コードを変換した場合にも勝手にクオート入るんですね・・・。
厄介ですorz
0599nobodyさん
2007/09/19(水) 20:55:20ID:???なんでや
0601nobodyさん
2007/09/19(水) 21:06:54ID:???ボトルネックを最優先で改善するのは当然の話だが
全てのコードが満遍なく遅いってのはそれ以前の糞プログラム。
チューニングの余地すらない。全部書き直せ。
0603nobodyさん
2007/09/19(水) 21:32:47ID:+/kMM8g5OSはRedHat、verは4.4.6です(lolipopのレンサバです)
<?php
if($_POST['mail'] == 1 && strlen($_POST['message']) != mb_strlen($_POST['message'])){
mb_language("Ja");
mb_internal_encoding("SJIS");
$mailto = "自分のアドレス";
$subject = "件名";
$message = $_POST['message'];
$host = getenv("REMOTE_HOST");
$addr = getenv("REMOTE_ADDR");
if(!$host){
$host = gethostbyaddr($addr);
}
$ua = getenv("HTTP_USER_AGENT");
$message = $message . "\n\n--------------------------------------------------\n" . $host . "\n" . $ua;
mb_send_mail($mailto, $subject, $message);
}
?>
続きます。
0604603
2007/09/19(水) 21:33:38ID:+/kMM8g5<form action="スクリプトのパス" method="POST">
<input type="text" name="message"> <input type="submit" name="submit" value="送信する">
<input type="hidden" name="mail" value="1">
</form>
1行目は文字数とバイト数が一緒なら半角のみと判断して送信しないようにしています。
このようなスクリプトを作成し、フォームからメールを送信しました。
すると、「ああ」とか「あああ」で送信できないのに「いい」とか「あいあ」だと送信できます。
これはどういう現象なのでしょうか?
0605nobodyさん
2007/09/19(水) 21:34:44ID:???0606nobodyさん
2007/09/19(水) 21:45:59ID:???0607nobodyさん
2007/09/19(水) 21:49:07ID:???質問も自由。(マルチとスレ違いはだめだが)
答えるのも自由。
じゃないのか?
0609nobodyさん
2007/09/19(水) 22:01:36ID:???なんか2行目でmb_languageを今更jaに指定してるけど、
1行目の段階ではこれはどういう設定になってるの?
文字コードが変な解釈されてる気がするけど。
0610nobodyさん
2007/09/19(水) 22:02:12ID:???0611nobodyさん
2007/09/19(水) 22:06:09ID:???PHPは、送られてきた文字列のエンコードを知らないわけだから、
それなのにmb_strlenしてもデフォの内部エンコードが使われて、正しくないエンコードで計算されて期待した値にならない
0612603
2007/09/19(水) 23:17:34ID:+/kMM8g5mb_language("Ja");
mb_internal_encoding("SJIS");
の位置を先頭にしたら動きました。ありがとうございました。
0613nobodyさん
2007/09/20(木) 00:10:59ID:???その2行を先頭に持ってきたくらいじゃ根本的な問題解決にならんよ
期待している"SJIS"以外が送られてきたら不具合出るんじゃね?
0614nobodyさん
2007/09/20(木) 00:25:09ID:TpeEYAA9亀レスすいません。
あの後試してみた所、ほとんどソースをまっさらにすると、すべてtrueとなりました。
どうも自分が改造する前のオリジナルのソースでセッションが貼られてるようです(←これが本当かどうかも怪しいですが)。
それに対し、自分も別にセッションを貼ったため問題が出たのかもと思いました。
そう思ったのは>>474で書いた print_r($_SESSION); の結果が、
↓のように、一度の print_r($_SESSION); 内で timing1 や timing2 が2回実行されていたからです
(今手元に正確な情報がないのでこんな感じだったということで)。
Array ( (略)=> Array ( [action] => process [timing1] => あ [timing2] => い (略) => Array ( [timing1] => ) [timing2] => い (略) => )
そして、timing1 が一度「あ」が入力された後、空文字?で上書きされてしまっていた為、問題がおきていたのかもと思いました。
もっとも、まっさらにしたソースでは使い物にならないので、既存のソースを解析する問題は残ったままとなりますが・・・。
ともあれアドバイスいただいた皆さん、どうもありがとうございます。
0615nobodyさん
2007/09/20(木) 00:26:35ID:???動かないんですが・・・
0616603
2007/09/20(木) 01:01:49ID:ROB03O5/フォームのあるhtmlはShift-JISで宣言してあるのですがそれでもダメでしょうか?
0619nobodyさん
2007/09/20(木) 01:17:43ID:???0620山田真一
2007/09/20(木) 10:38:42ID:RRR2JFqmWarning: main(db/.php): failed to open stream: No such file or directory in /home/webmaster/public_html/link/yomi.php on line 21
Fatal error: main(): Failed opening required 'db/.php' (include_path='.:') in /home/webmaster/public_html/link/yomi.php on line 21
となって表示されません。
一応21行目を確認したら
require("db/$cfg[db_sql].php");
となっていました。
誰かわかる方教えてもらえませんか?
0621nobodyさん
2007/09/20(木) 10:41:11ID:???0622nobodyさん
2007/09/20(木) 10:42:41ID:???0624nobodyさん
2007/09/20(木) 10:51:06ID:RRR2JFqm具体的にはどうすればいいんですか?
>622
新人だけど一人でやってます・・・
0625nobodyさん
2007/09/20(木) 10:52:08ID:???0626nobodyさん
2007/09/20(木) 11:40:37ID:???require("db/$cfg[db_sql].php");
となってて
エラー内容が
Failed opening required 'db/.php'
となってりゃエスパーじゃなくてもすぐ分かるだろ。
>>624
$cfg["db_sql"] に適切なDB名を設定する。
これが>>625の言う通りyomi-searchのPHP版なら以下参照
ttp://sql.s28.xrea.com/src/
0627nobodyさん
2007/09/20(木) 11:55:42ID:IWhkcLGDそんな会社普通はすぐやめる。
webの会社でhpが表示されないとかありえない。
車売ってるくせにエンジン直せないのと同じこと。
0628nobodyさん
2007/09/20(木) 12:14:13ID:???新人1人しかいない時点でそりゃWebの会社じゃないだろ。
0629nobodyさん
2007/09/20(木) 12:40:38ID:IWhkcLGD0630nobodyさん
2007/09/20(木) 12:44:16ID:???くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/833
0631620
2007/09/20(木) 12:59:19ID:RRR2JFqmありがとうございます^^早速見てみますね
>627
会社はWeb系ではないです^^;
0633nobodyさん
2007/09/20(木) 13:59:56ID:KlmMrt1+POSTで取得したときに「ソ」や「表」に「\」が入りますよね。
これはどの時点での文字化けを防いでいるのでしょうか?
POSTで取得したデータを全てクオート解除しても大丈夫なのでしょうか?
0634nobodyさん
2007/09/20(木) 17:01:09ID:KlmMrt1+preg_replace_callbackってPHP5.0.4と5.1.1で動き違うんだけど
5.1.1でバグ発生してるとかないよな?
0636635
2007/09/20(木) 17:24:46ID:???php.iniっての作ってmagic_quotes_gpc = Off
で再起動だね、、憶えておくよ
0637nobodyさん
2007/09/20(木) 17:36:57ID:???0638nobodyさん
2007/09/20(木) 17:45:37ID:QNx3pq8z勝手に解決するな
ini_setで解決しないんだよ
0643nobodyさん
2007/09/20(木) 19:18:15ID:???0644nobodyさん
2007/09/20(木) 19:25:21ID:???0645nobodyさん
2007/09/20(木) 20:57:35ID:bTS/b7yb一応、DBにカテゴリ名、ID、親IDとして保存させてるんですけど
表示させるときにどのようにしたらいいのかわからないのですが
どのようにしたらできますか?
0646nobodyさん
2007/09/20(木) 21:00:30ID:???0647645
2007/09/20(木) 21:05:10ID:bTS/b7yb探して・・ってやってるんですがすべてのノード表示させるようにできないんです
いくらノードを追加してもすべてのノードを表示させる方法ってないですか?
0648nobodyさん
2007/09/20(木) 21:05:56ID:???0649645
2007/09/20(木) 21:08:07ID:bTS/b7yb一応、5日ぐらい考えたのですが僕の脳みそじゃ解決しません
0650nobodyさん
2007/09/20(木) 21:11:12ID:???0651nobodyさん
2007/09/20(木) 21:13:45ID:???0652nobodyさん
2007/09/20(木) 21:32:07ID:???原因の切り分けをする努力を放棄してたら先に進むわけなし
0653nobodyさん
2007/09/20(木) 21:38:09ID:???0654645
2007/09/20(木) 21:47:26ID:bTS/b7yb$parent_nodes_result = mysql_query($sql);
while ($row = mysql_fetch_array($parent_nodes_result, MYSQL_ASSOC)) {
echo "<li>{$row['ノード名']}\n<ul>\n";
$sql = "SELECT * FROM `CATEGORIES` WHERE `親ノード番号` = {$row['番号']} ";
$child_nodes_result = mysql_query($sql);
while ($row = mysql_fetch_array($child_nodes_result, MYSQL_ASSOC)) {
echo "<li>{$row['ノード名']}</li>\n";
}
echo "</ul>\n</li>\n";
}
こんな感じなんですけど
これだと2階層までしか取得できないんです
0655nobodyさん
2007/09/20(木) 21:48:57ID:???0656645
2007/09/20(木) 21:53:25ID:bTS/b7ybそれがもっと多い階段まであった場合に、すごいソースになってしまうので
なんかwhileを使って出来ないかと思って考えてるんですがわからなくて
0658nobodyさん
2007/09/20(木) 21:57:52ID:???すごいソースで何が悪い。見た目なんか気にするな。
0659nobodyさん
2007/09/20(木) 21:58:29ID:???ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280408/?ST=oss
この辺読んで再チャレンジ
0660645
2007/09/20(木) 22:02:48ID:bTS/b7yb>>654
読んでみます
0662nobodyさん
2007/09/20(木) 22:04:29ID:???0663nobodyさん
2007/09/20(木) 23:27:38ID:???0664nobodyさん
2007/09/20(木) 23:42:57ID:mjQwk2aW探す方法を教えてください。少し規模の大きなプログラムだと見つけるのに
時間がかかってしまします。
エディタの機能になるのでしょうか。もしそうであればそのエディタを
教えてください。
0665nobodyさん
2007/09/20(木) 23:44:38ID:???0666nobodyさん
2007/09/20(木) 23:47:55ID:???0667nobodyさん
2007/09/21(金) 03:19:02ID:???0668nobodyさん
2007/09/21(金) 06:54:05ID:/lN3SBgsfputs($fp, implode("", $data));
$data = $data.$data2.$data3;
fputs($fp, $data);
どちらが負荷が低くなりますか?
0672nobodyさん
2007/09/21(金) 13:04:43ID:???0673nobodyさん
2007/09/21(金) 13:20:47ID:???0674nobodyさん
2007/09/21(金) 13:46:29ID:???0675nobodyさん
2007/09/21(金) 14:25:51ID:5JzPFtpGどうすればよいですか?
0677nobodyさん
2007/09/21(金) 14:41:31ID:QV6ADNltrequire_onceしただけでStrict Standardsエラーがたくさん出るのは何故?
エラーレベルを高くしてるから?
どなたかよろしくお願いします。
0678nobodyさん
2007/09/21(金) 14:49:28ID:fJKnQpQmだから俺はpear使わない。
error_repoting E_STRICT とかでぐぐればエラー出さない方法はわかるとおもうけど。
厳密にはエラーっていうかワーニングか、動くしな
ちなみにオブジェクトをリファレンス渡ししたり、クラスのオーバーロードすると出る
0680nobodyさん
2007/09/21(金) 14:56:05ID:QV6ADNltありがとうございます。
開発レベルではStrictで行いたいのですが、MDB2だけのエラーを非表示にできないんですか?
あるいはリファレンス渡ししない方法などはないのでしょうか。
0681nobodyさん
2007/09/21(金) 14:59:59ID:5JzPFtpGSimpleXMLの場合での取得方法がわからないんです。
<tag1 id="1" >
<tag2 >a</tag2>
<tag2 >b</tag2>
<tag2 >c</tag2>
<tag1 id="2" >
<tag2 >d</tag2>
<tag2 >e</tag2>
<tag2 >f</tag2>
の場合に<tag1 id="1" >のデータ(a,b,c)を取り出したいんですが
この場合SimpleXMLでだとどうすればよいのですか?
0683nobodyさん
2007/09/21(金) 15:12:23ID:5JzPFtpGすんません、初心者でXMLのデータ処理をするのが初めてなので
取得方法自体がわからないんです。
どう書けばよいの?
0684nobodyさん
2007/09/21(金) 15:12:57ID:fJKnQpQmpearの
$a =& new ex();
って書き方の「=&」ここの部分を全部「=」に直せば問題は解決さ、どれくらいあるかわからないけどw
もしくはpearモジュル使う部分のファイルにだけerror_reporting(E_ALL);とか書いておけばいいんじゃねーの?
0685nobodyさん
2007/09/21(金) 15:19:00ID:QV6ADNlt後者の方法で頑張ります^^;
ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています