【PHP】下らねぇ質問はID出して書き込みやがれ 74
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/09/20(土) 20:23:08ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0552nobodyさん
2008/10/03(金) 04:28:08ID:???0553nobodyさん
2008/10/03(金) 04:47:08ID:agLBvyd6テキスト形式のログファイルに書き込む方法があると思いますが、
両者の利点、欠点は何ですか?
0554nobodyさん
2008/10/03(金) 04:49:20ID:???0555nobodyさん
2008/10/03(金) 04:50:44ID:???ファイル形式に保存する場合は、容量はOSの制限を受けるため、
上限が生じるのが欠点ですが、速度が速いのが利点。
逆に、データベースに保存する場合、容量が2PB(2PTとは2000TBのこと)と実質上容量の制限が
ないのが利点ですが、速度が遅いのが欠点かな。
0556553
2008/10/03(金) 05:08:55ID:???素早く、かつ大変ご丁寧なレスをありがとうございます。
ポイントは「速度」と「ファイルの容量」なのですね。
ということは、例えば「1月の書き込み」「2月の書き込み」…などと
ファイルを分けて保存すれば、1つ1つのファイルの容量は大きくならないので、
ファイル形式で十分ということでしょうか?
(正直、データベースの使い方がよく分からないので、
ファイル形式で良ければそれで済ませたい、という思いから質問させていただいてます)
0557nobodyさん
2008/10/03(金) 05:13:16ID:???0558nobodyさん
2008/10/03(金) 05:20:21ID:???いいえ違います。
DBは膨大なデータを扱うことを想定して設計されているので、
データが多くなれば多くなるほどDBのほうがデータの検索速度は高速です。
ファイルの場合、ファイルシステムにもよりますが、データの検索速度はDBに比べ低速です。
またファイルの場合、効率的に読み込む手段が用意されていない言語の場合、
データが多くなると読み込みだけで時間を要します。
ファイルの利点はSQLを必要としないことぐらいです。
これはSQLを覚える必要がないのと、
SQLインジェクション等のSQL特有の攻撃を意識しなくてすむことぐらいです。
特段理由がなかったらDBを使うべきです。
0559553,556
2008/10/03(金) 05:42:13ID:???分かりやすいレスでとても感謝しています。
DBの利点がよく理解できました。
今日からDBを勉強することにします。
どうもありがとうございました。
0561553
2008/10/03(金) 06:21:24ID:???すみません、>>559で書き込んだ手前、質問しにくいのですが、
理由を教えていただけますでしょうか?簡単で構いませんので・・・。
2chはdatファイル(=テキストファイル?)ですよね。
また、検索や読み出し(ログの表示)をあまり必要としない場合は、
データベースの利点は少ないということでしょうか?
0564nobodyさん
2008/10/03(金) 08:03:43ID:???便利だが、いろいろ気遣いも必要になる。
datファイルの場合は、少し心細いが好きなようにやれて小回りがきく。
0565nobodyさん
2008/10/03(金) 08:27:22ID:???どうみても経験不足はあなたです。
本当にありがとうございました。
2chがどうしてDBを使ってないのか説明してみw
0569nobodyさん
2008/10/03(金) 08:51:33ID:???0570nobodyさん
2008/10/03(金) 08:54:42ID:???2chは負荷かかるし検索機能とかないだろ
ただ書き込んで表示してるだけ
ようするに掲示板につける機能によりけり
2chの話を出すのはマヌケ
あとあと掲示板にいろいろな機能を持たせたいのなら
最初からDBで設計しておいたほうがいい
2chは速さを追求した結果前時代的なシステムで拡張が困難
0574nobodyさん
2008/10/03(金) 09:13:45ID:???DBに興味があるならやってみなよ
両者の比較なんて大規模システム運用するわけじゃないんだから
パフォーマンスに目に見える差異は出てこない
ファイルは専用の関数だけ覚えれば扱えるけど
DBはいろいろ覚えることがあるから
どういうものか触れて勉強するのもいいと思う
Rapid開発になるとフレームワークを使うようになるし
そうするとDBが必須になってくるからね
慣れれば高速に開発できるのもDBの利点
>>573
だって無いだろ
0575nobodyさん
2008/10/03(金) 09:21:00ID:???冒頭から間違っているし。
> 2chは負荷かかるし検索機能とかないだろ
冒頭から間違っているし。
> 2chは負荷かかるし検索機能とかないだろ
冒頭から間違っているし。
> 2chは負荷かかるし検索機能とかないだろ
冒頭から間違っているし。
0576nobodyさん
2008/10/03(金) 10:09:02ID:???0577nobodyさん
2008/10/03(金) 10:16:28ID:???0583nobodyさん
2008/10/03(金) 10:49:34ID:???0585nobodyさん
2008/10/03(金) 11:45:30ID:???0586nobodyさん
2008/10/03(金) 11:58:56ID:/eEzlvvLphpファイルを機能別に分けたりしてますか?
0587nobodyさん
2008/10/03(金) 12:20:21ID:???0588nobodyさん
2008/10/03(金) 15:56:15ID:xSW6clzhデータの整合性とか、大丈夫ですか?
0589nobodyさん
2008/10/03(金) 16:06:53ID:rpr6AsK7$sql = "SET NAMES utf8";
$result = mysql_query($sql);
とクエリを投げるようにして、とりあえず解決したのですが、
あまりスマートじゃないですよね?
上のPHP2文がある/無い で、文字化けする/しない という結果になるんですが、
この結果から、どの部分で文字コードがおかしくなっているのか予想ってできますでしょうか?
0590nobodyさん
2008/10/03(金) 16:21:01ID:???コネクトするたびにって、、、1ページ読み込むのに何回もコネクトしてるってこと?
DBのホストを分散しているとかは別だけど、もしそうならスクリプトを1から作り直したほうがいい
それかmysqlのコンフィグを書き換えデフォをUTFにする
0591nobodyさん
2008/10/03(金) 16:53:27ID:rpr6AsK7いや、データベースのクラスがあって、
そのクラスをnewするたびにconnectしています。
基本的に1ページには1回newして、そのオブジェクトを使うので、
1ページ=1connectです。
PHPのファイルがUTF-8で、my.cnfの設定もUTF-8に統一している
(コンソールからMySQLにつないで、statusで確認済み)のですが、
あと文字コードに関わる部分ってどこがあるでしょうか?
0592nobodyさん
2008/10/03(金) 17:13:26ID:???クラスにしているなら特にSET NAMEを複数書く必要もないしスマートだと思うけど
格納するクエリが文字化けしてなく、格納した時にすでに文字化けしているなら他に原因は思いあたらない
0593nobodyさん
2008/10/03(金) 18:08:56ID:???javascriptはアクセス先のPHPへ同じセッションIDを通知するから、
ページ全体を表示する際に生成したセッションと同一と言える
0594nobodyさん
2008/10/03(金) 18:10:44ID:???何にせよmysql側で対応したいなら、
MySQL「サーバ」とMySQL「クライアント」の文字コードを統一しないとな
PHPの文字コードじゃないから注意だぞ(PHPからMySQLクライアント(ドライバ)に渡る際に変換されるから)
0596211
2008/10/03(金) 19:14:51ID:XpYjXbv/質問でしたが、一応解決したので書いておきます。
結果的には oci8.so をユニバーサルバイナリにしてみたら動きました。
理由は説明できないので聞かないでください。
最初に書かないといけなかったような気がしていますが、環境は、
$ uname -a
Darwin macbook.example.com 9.5.0 Darwin Kernel Version 9.5.0: Wed Sep 3 11:29:43 PDT 2008; root:xnu-1228.7.58~1/RELEASE_I386 i386
です。
いろいろ試行錯誤していて、以前指摘された "DYLD_PRELOAD"に相当する
ものは"DYLD_INSERT_LIBRARIES"ではないかと思い、試していると、
$ export DYLD_LIBRARY_PATH=/usr/local/instantclient_10_2
$ php ocitest.php
(成功)
$ /usr/sbin/httpd
dyld: could not load inserted library: /usr/local/instantclient_10_2/libclntsh.dylib.10.1
Trace/BPT trap
こうなりました。全然理解できませんが。
ユニバーサルバイナリにしたら良いかもと勝手に思い、
$ pecl bundle oci8
$ CFLAGS='-arch i386 -arch x86_64 -arch ppc -arch ppc64' LDFLAGS='-arch i386 -arch x86_64 -arch ppc -arch ppc64' ./configure --with-oci8=instantclient,/usr/local/instantclient_10_2 --disable-dependency-tracking
$ sudo make install
これで試したらすんなり動きました。
おわり。
0597211
2008/10/03(金) 19:23:49ID:XpYjXbv/途中一行抜けてました。
$ export DYLD_LIBRARY_PATH=/usr/local/instantclient_10_2
$ export DYLD_INSERT_LIBRARIES=/usr/local/instantclient_10_2/libclntsh.dylib.10.1
$ php ocitest.php
あと、せっかくなのでちょっと追記。
$ file oci8.so
oci8.so: Mach-O universal binary with 4 architectures
oci8.so (for architecture i386): Mach-O bundle i386
oci8.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
oci8.so (for architecture ppc7400): Mach-O bundle ppc
oci8.so (for architecture ppc64): Mach-O 64-bit bundle ppc64
$ file oci8.so.orig (動かなかったoci8.so)
oci8.so.orig: Mach-O bundle i386
$ file libclntsh.dylib.10.1
libclntsh.dylib.10.1: Mach-O dynamically linked shared library i386
0598nobodyさん
2008/10/03(金) 19:25:49ID:???0599nobodyさん
2008/10/03(金) 19:26:25ID:???0600211
2008/10/03(金) 20:00:31ID:XpYjXbv/http://pc11.2ch.net/test/read.cgi/mac/1216824430/
に似たような事例があって、いくつかわかりました。
標準でインストールされている httpd は x86_64 で動作しているようです。
アクティビティモニタ上で "Intel (64ビット)" と表示されていました。
で、oci8.so はユニバーサルバイナリにすることでロードされましたが、
その中で使っている libclntsh.dylib は i386 のバイナリしかないわけで
ocitest.php をapacheに実行させたら Trace/BPT trap で失敗してました。。。
なかなか上手くいかないもんだのう。。。
0601nobodyさん
2008/10/03(金) 20:28:26ID:???0602588
2008/10/03(金) 21:05:21ID:???どうも同一のセッションIDを送ってくれるので、大丈夫ということを知り安心しました。
回答つかないかと思ってあせってたんです(;´д`)
本当にありがとうございました。助かりました。
0603nobodyさん
2008/10/03(金) 22:38:52ID:19ebb2MR$array[1]["name"]
$array[2]["name"]
となっている配列があったとして、
nameの中が空の場合、その配列を削除したいと思っています。
ひとつずつIFで条件分岐する以外で方法はないでしょうか?
0604nobodyさん
2008/10/03(金) 23:42:28ID:???本体とログとかさらにいくつもファイル複数あるなら分けたほうがいい気はする。
0605nobodyさん
2008/10/03(金) 23:58:50ID:???なさげ。
普通にif文でやってください。
で、ついでに配列に格納する段階でどうにかするという方向性でいったら?
0606nobodyさん
2008/10/04(土) 00:02:17ID:qepvww6d0607nobodyさん
2008/10/04(土) 00:25:18ID:???デフォルトのまま使えば特徴は出るがそんなのはいくらでも隠蔽できるし
使ってる本人がこのサイトはなんたらのフレームワークで構築されてます
みたいな自己紹介してないとわからない
0608nobodyさん
2008/10/04(土) 00:29:35ID:qepvww6dなるほど。 ご回答ありがとうございました
0609nobodyさん
2008/10/04(土) 09:35:14ID:???require_onceの数が多くなってしまいます。
ファイルをインクルードするためのオーバーヘッドは気にしなくて大丈夫でしょうか?
0610nobodyさん
2008/10/04(土) 11:25:40ID:???ファイル数が多いならrequire_onceよりrequireを。
onceは重複チェックの分オーバーヘッドがrequireよりありんす。
0611nobodyさん
2008/10/04(土) 16:11:14ID:???WEBの解説ページに書いてあったんだけど、
それってUNIX環境だけだよね?
Windowsでは、起動しているメールサーバーソフト(mercuryとか)を
使って送信してるんだよね?
0612nobodyさん
2008/10/04(土) 16:23:54ID:qMLHDr64ここに、
「あとは、Apacheを再起動します。そうしないとphp.iniの設定内容が反映されません。」
って書いてあるけど、php.iniは
別にアパッチを再起動しなくても設定の変更は
反映されるよね?
0613nobodyさん
2008/10/04(土) 16:29:09ID:???モジュール版のPHPはApache起動と同時にPHPも内部的に稼動させるから、
Apache起動時点でのiniになる、だから変更には再起動が必要
CGI版なら、アクセス時にPHPが起動するから再起動は必要なし
0614nobodyさん
2008/10/04(土) 16:56:57ID:qMLHDr64自分のPHPがCGI版なのか、
モジュール版なのか、
どこを見て判定するの?
0615nobodyさん
2008/10/04(土) 17:28:26ID:qMLHDr64http://oshiete1.goo.ne.jp/qa4116414.html
↑ここに書いてあった。
「phpinfo()を見る」
「ServerAPIを見る」
「Apache 2.0 Handlerとなっていたら、モジュール版」
「CGIとなっていたら、CGI版」
0616nobodyさん
2008/10/04(土) 17:45:37ID:???質問に答えればすぐ終わることをわざわざ関係ないレスするやつ
答えにならないレスするやつのほとんどが質問してるやつがどういう答えを求めてるかがわかってない馬鹿
このPHPスレだけじゃなくてどこの質問スレも同じ
なんなんだろね?
リアルが馬鹿でどうしようもないから質問しに来たやつに対して優越感にでも浸りたいのか?w
0617nobodyさん
2008/10/04(土) 17:50:17ID:???4のサポートもう終わってるんだし5にしてくれよと思う
0618nobodyさん
2008/10/04(土) 17:53:44ID:???自分の入れるのがどっちなのかくらい分かってから使おうぜ・・・
>>617
運営に頼むか、そんなひどいとこは使わないのが吉。
0619nobodyさん
2008/10/04(土) 18:01:54ID:???いや、まだまだ殆どのとこが4じゃないかな
たとえ使えてもFTP接続先が/public_html/直下だったり結構ひどいとこばかりだわ
俺の探し方が下手糞なのかもな・・・
0620nobodyさん
2008/10/04(土) 18:05:36ID:???0621nobodyさん
2008/10/04(土) 18:25:57ID:???PHP可と書いてるところで登録してみたらPHP4だったーってのはよくあるな
>>620
いろんなとこ借りて覚えてないわ
他にはmod_rewriteが使えないとことか多いよな
0622nobodyさん
2008/10/04(土) 18:27:49ID:???0623nobodyさん
2008/10/04(土) 18:28:45ID:???php4でしか動かない奴も多いからな。
「ウチのblogが急に動かなくなった、どうしてくれる!」とか
クレームが来ること考えるとそう簡単には切れないべ。
0624nobodyさん
2008/10/04(土) 19:02:55ID:qMLHDr64これってどうやるの?
0625nobodyさん
2008/10/04(土) 19:12:43ID:???0626nobodyさん
2008/10/04(土) 21:02:35ID:Ac3kpf8kHTMLファイルからimgタグでtest.phpを読み込み、
そこで訪問者のログを取っています。
(<img src="./test.php?page=top" />←こんな感じです)
その時test.phpでは
header("Content-length: " . filesize('./dammy.gif'));
というように1px×1pxの画像を出力しているのですが、
画像を出力しないで済む方法はないでしょうか?
アクセスログの取り方はimgタグでやりたいと思っています。
分かる方いらっしゃればお願いします。
0627nobodyさん
2008/10/04(土) 21:04:14ID:???0628626
2008/10/04(土) 21:34:46ID:Ac3kpf8kページは原則的に静的という縛りがあります、すみません。
0629nobodyさん
2008/10/04(土) 21:35:45ID:???あと画像を出力したくない理由は?
どうでもいいことは書いてるけど必要な情報が足らん
0630626
2008/10/04(土) 22:01:56ID:Ac3kpf8kアクセス解析のプログラムはフリーで配布する目的でして、
手間がかからないよう静的ページからでもOKにしたいのが理由です。
>画像を出力したくない理由は?
特に大きな理由はありません。
ただbodyタグ内のどこにimgタグを突っ込んでもデザインが崩れなければ最高だと思いまして。
情報の後出し申し訳ないです。
0631nobodyさん
2008/10/04(土) 22:04:33ID:???やったことないけど
JavaScriptとしてPHPで読み込んでみてはどうかな?
<script type="javascript" href="./test.php?page=top"></script>
0632626
2008/10/04(土) 22:19:45ID:Ac3kpf8kありがとうございます、解決しました!
なぜかhrefをsrcに変更したところ動作しました。
javascriptでphpを呼べるんですね。
ホントにありがとうございました。
0634nobodyさん
2008/10/05(日) 12:36:18ID:???jsでするみたいだからどうでも良い話にはなるが
1x1のサイズだとbase64エンコードして出来た文字列を内部に持たせる方が楽だぞ
0635nobodyさん
2008/10/05(日) 19:21:16ID:BsaGVD4F「PHPマニュアル」
っていったら、
なにか公式のものがあるの?
ようは固有名詞になってるの?
0636nobodyさん
2008/10/05(日) 19:27:23ID:???0637nobodyさん
2008/10/05(日) 19:38:09ID:BsaGVD4Fここに書いてあるんだけど、
「6の項目は実現できませんでした。なぜうまく行かなか
ったかと言うと、ブラウザのキャッシュが大きな壁だった
のです。同じ画面にするとどうしても再読込あるいは次
の投票を行わないと反映されないのです。ある程度対応
策があるのですが、サーバー側のプロキシ(?)の問題も
あるようで100%は無理みたいですね。あちこちで見られる
アンケートもほとんど2画面ですからね。」
って書いてあるのだが、PHPでやる場合、
基本的に2画面設計にするのが業界の主流なの?
0638nobodyさん
2008/10/05(日) 19:47:25ID:BsaGVD4FPHPマニュアルってこれか?
まさかおまえら、これ全部読んだの?
0639nobodyさん
2008/10/05(日) 21:25:33ID:BsaGVD4FCGIゲームのテストって
ローカルでは限界があるのか?
0640nobodyさん
2008/10/05(日) 21:28:43ID:???0641nobodyさん
2008/10/05(日) 21:29:17ID:BsaGVD4Fここ読んだら、
[ステップ2] サーバにアップロードする
「今書いたPHPスクリプトファイルを、FTPソフト
でサーバのブラウザでアクセスできるところにア
ップロードします。CGIのようにパミッションを設定
する必要はありません。」
って書いてあるんだけど、本当にパーミッションを
設定する必要はないの?
0642nobodyさん
2008/10/05(日) 21:32:21ID:???0643nobodyさん
2008/10/05(日) 21:40:38ID:???0644nobodyさん
2008/10/05(日) 21:49:03ID:BsaGVD4F0645nobodyさん
2008/10/05(日) 21:51:45ID:???0646KillYouHag ◆KillYouHAg
2008/10/05(日) 22:12:26ID:???0647nobodyさん
2008/10/06(月) 00:22:36ID:szIkgH26mysqlと連携させましょう!ってなってるけど、別にsqlliteでも
いいんだよね。
0648nobodyさん
2008/10/06(月) 00:25:50ID:???0650nobodyさん
2008/10/06(月) 12:20:44ID:HtdN4tAqたとえば100行あって5行目hogeをfugaに変えるだけの時はどんな処理が一番いいですか?
下のようなものしか思いつきません。
$list = explode("\n",$file);
$list[4] = "fuga";
$file = implode("\n",$list);
0651nobodyさん
2008/10/06(月) 12:23:04ID:???0652nobodyさん
2008/10/06(月) 12:27:22ID:HtdN4tAqありがとうございます。
ログのようなもので簡単に言うと2chのsubect.txtっぽいものです。
10M以下です。
■ このスレッドは過去ログ倉庫に格納されています