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

【PHP】下らねぇ質問はここに書き込みやがれ 31

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/25(水) 08:45:46ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 30
 http://pc8.2ch.net/test/read.cgi/php/1159979905/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0165nobodyさん2006/10/26(木) 21:50:54ID:???
最近は逆ギレが流行ってるのか。
じゃあこっちも時代に合った対応をしてやらないとな。

>>162
うん、そうなのでちゅ。
ここはあなたよりれべるのひくいおこちゃまがこたえるすれなのでちゅ。
だからあなたのようなさんじげんさいきょーにつよまってきちがいじみたずのうをおもちの
ちょーぜつてんさいぷろぐらまーなかたのくらいあんとの
まんぞくどをみたす(あげるってこと?)てつだいにはならないのでちゅ。
わかったらとっととかえってくらいあんとに「じぶんにはむりでしたごめんなちゃい」って
なきながらどげざしてあやまってくだちぃ。
0166nobodyさん2006/10/26(木) 21:51:46ID:???
まず、If-Modified-Since見て304 Not Modifiedを返す事を考えてはどうだろう?
0167nobodyさん2006/10/26(木) 21:56:52ID:???
ほんっっっとうに下らないスレですね。PHPって基地外の使う言語だというのは本当のようです。
0168nobodyさん2006/10/26(木) 22:22:13ID:???
>>164さんありがとうございます。
なるほど、関数だと思ってしました。
php4ではvarは使えるけど、php5ではE_STRICT警告がでてしまうと。
php4とphp5に共通したコードを書くのはE_STRICT警告でてしまうのですね。
う〜ん、どうにか怒られないで共存できる方法があればいいんですけどね。
0169nobodyさん2006/10/26(木) 22:42:55ID:???
残念ながら ID:dpAXN0uK のような基地外がいるのは事実・・・。
だけど、ここのスレはいい人ばかりで大好きです。
ありがとう。
0170nobodyさん2006/10/26(木) 22:47:00ID:???
>>160
どうせ更新頻度増やしても、検索結果には影響ないことには言われるまで気づかなかったんだろ。
頭胃いね。
0171nobodyさん2006/10/26(木) 23:12:18ID:???
>>168
オブジェクト指向を使う場合は互換性が全く無いものと思って
どっちかに絞って作った方がいいですよ。
0172nobodyさん2006/10/26(木) 23:28:19ID:???
>>171
ありがとうございます。
両方で動作する仕組みを作りたいのですが、
とりあえず勉強ということでどっちかのバージョンで作成を試みます。
0173nobodyさん2006/10/26(木) 23:33:18ID:???
>>170
可能な限り最新の内容を検索結果に反映させたい、ってことじゃないの?

で、とりあえず>>105への回答だけど、それでいいと思うよ。
googleがそれで頻繁に更新してくれるのかまでは知らんけど。
0174nobodyさん2006/10/26(木) 23:34:00ID:???
>>172
だったらオブジェクト指向は使わない、とするしかないんじゃないかな。
0175nobodyさん2006/10/27(金) 00:03:01ID:???
>>173
少なくともGoogleはLast-modifiedなんて読んでいないようだ。
If-modified-sinceに対して300台を返せば、クロール時の帯域を節約できるとは書いてあるが(160によるとそこは気にしていないようだし)、Googleのロボットがクロールする頻度を操作できるという記述はない。
FAQによれば、飽くまで「定期的」に巡回しているし、その度に更新はすぐに検出される、という記述しかない。

つーか内容の真偽以上に ID:dpAXN0uK の暴れ具合の酷さは目に余る。
0176nobodyさん2006/10/27(金) 00:12:28ID:???
GoogleはLast-Modifiedを読む。検索結果の下に出る。
0177nobodyさん2006/10/27(金) 00:15:13ID:???
あー読まないと言ったのはミスだったな。失礼。
正確にはLast-modifiedをクロール頻度の操作に使わないということ。
0178nobodyさん2006/10/27(金) 00:22:56ID:???
もーいいからよそいってくれ。ここは知識の見せ付けあいのスレじゃない。
0179nobodyさん2006/10/27(金) 00:25:17ID:???
ググれば誰でも見つかるような内容を知識の見せ合いと呼んでどうすんの?
0180nobodyさん2006/10/27(金) 00:25:48ID:???
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50

こっちのスレいってやってくんない?質問する人と回答する人のじゃまだからでてってくれ。
0181nobodyさん2006/10/27(金) 00:27:13ID:???
そういうこと書くからまた荒れるんだよな。
あ、俺もか。
0182nobodyさん2006/10/27(金) 00:37:42ID:???
>>175
>>105=>>113で本人が「Last-modifiedを見てる」と信じてるんだから
そこはスルーでいいんじゃないのかな。
表向き公開されてない裏仕様なんだ!とか言い出されても確認しようがないし。
ほっときゃいいじゃん。
で、>>105の質問はあくまで「PHPページで最終更新日時を詐称する方法」なんだから
それに対しては「header()でLast-modifiedを返せば良い」でFAだと思うんだけど。
0183nobodyさん2006/10/27(金) 00:40:42ID:???
FAっていうか、もしそうだとしたら、>>105の書き込み自体がかなりバカにしてると思うんだけど。
0184nobodyさん2006/10/27(金) 00:44:19ID:???
もう、まんこ
0185nobodyさん2006/10/27(金) 00:45:04ID:???
SEOとかGoogle関係とかはWeb製作じゃないか?
0186nobodyさん2006/10/27(金) 00:49:52ID:???
元の質問がSEO絡みをPHPでどう処理するかって話だから、完全に板違い・スレ違いって感じでもないんジャマイカ?
あと、発狂してる人がいるけど、内容をよく吟味すればPHPでサイト構築する上ではわりと頻繁に使われるHTTP関係の話だし、そんなにめちゃくちゃに高度で専門的な話でもないよ。
0187nobodyさん2006/10/27(金) 00:57:06ID:???
>>183
そんなん無視すれ。気にしても始まらんでしょ。
あそこまで分かっててheader()でいいの?って聞いてくる辺り、
むしろオツムの弱い人だと俺は解釈してたよ。
>>185
その実装に関する話はここで合ってるよ。
>>186
誰も高度で専門的だとは言ってないと思うけどね〜
0188nobodyさん2006/10/27(金) 00:59:06ID:BT8IGUCu
>>165
逆ギレ?日本語をちゃんと使えるようにした方がいいぞ?プログラミング言語も満足に使えてないんだからさ。(煽りのレベルも低すぎ・・・)
0189nobodyさん2006/10/27(金) 00:59:53ID:BT8IGUCu
>>170
SEO対策について知らないんだな。黙ってろよ
0190nobodyさん2006/10/27(金) 01:02:58ID:BT8IGUCu
>>173
あ、まともなレスが返ってきて助かりました。
論理の通じる人がいるんだと安心できました。
0191nobodyさん2006/10/27(金) 01:14:18ID:BT8IGUCu
>>175
少し論理が通じる人が書き込んでて安心しました。
俺が暴れているというより、日本語の通じない人が書き込んでて、俺がレスを返してるだけです。
蛇足ですが、GoogleのクローラーがLast-modifiedを読むのはSEOの世界では常識です。

>>176
はい。

>>177
>正確にはLast-modifiedをクロール頻度の操作に使わないということ。
使います。経験則から更新頻度が高いと頻繁に訪れてるっぽいと判断できます。
もちろんそれは、PageRank、PagePriorityに影響しないでしょう。

>>182
>>>105=>>113で本人が「Last-modifiedを見てる」と信じてるんだから
俺はそれをここで議論する気はないよ。

>>183
すいません。日本語が使えないのにレスを返す人がいるので、少し懲らしめました。

>>187
全然高度な話じゃないので、立ち話のつもりで書き込んだら、難しくて理解できない人がいたらしいことに吃驚しました。
0192nobodyさん2006/10/27(金) 01:19:10ID:???
>>105
よく飽きずに中途半端な書き込みするな。
ちみのやっていることは、最初から無駄以外の何物でもないと早く気づきなされ。
Last-modifiedでそんな操作できると思うならソース晒してみ。
そんなオイシイ対策があるのにWeb上で誰も話題にしてないわけないだろ。
客からロボットにクロールされる頻度を上げてくれと言われたなら、その時点で「効果はない」と言えるエンジニアになろうね。
客に合わせて実装した振りするなら、そもそも質問するまでもなく、Last-modifiedでも何でも吐いときゃいいだろ。
要はお前はレベル低いの。
0193nobodyさん2006/10/27(金) 01:21:24ID:???
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
0194nobodyさん2006/10/27(金) 01:23:34ID:???
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
0195nobodyさん2006/10/27(金) 01:26:38ID:???
>>193-194
お前が池
0196nobodyさん2006/10/27(金) 01:27:06ID:???
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
こっちいけ
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50
0197nobodyさん2006/10/27(金) 01:29:01ID:???
自治厨も我慢できなくなっちゃったみたいですw
そういうのが自治すると逆に迷惑な良い例。
0198nobodyさん2006/10/27(金) 01:29:55ID:qOfMqiwc
どうせ、なんとかボンバイエだろ。
0199792006/10/27(金) 02:23:44ID:Q6o9pTT9
すみません、私の乏しすぎる能力では
出来ませんでしたorz

$next_lines[1] + 1のようにしても、$numの値をチェックすると1になってしまうんです。

おそらくファイルの読み込み時でこけているのかと思いますが、具体的な原因がさっぱりで・・・
どなたかどの辺りでこけているのかこっそりヒッソリ書きこんでいただけないでしょうか?

よろしくお願いします。

書き込み部ソース:http://source.is.land.to/s/q.phps
全体:http://source.is.land.to/s/all.phps
0200nobodyさん2006/10/27(金) 02:26:24ID:???
>>192
その議論はスレ違い。他所でやれ。
クロール頻度やPageRankのルールなんてしょっちゅう変わってるんだから
そんなことの是非は実装を議論する板で問うべき問題ではない。
0201nobodyさん2006/10/27(金) 02:34:36ID:???
>>199
> 書き込み部ソース:http://source.is.land.to/s/q.phps
これだけ見るとファイルに書き込んでる部分がないので原因は分からない。
なので、allの方だけ見てみるけど、
まず
> $read_1 = file($res_num_dat);//まず、読み込みます。
で読み込んだ直後に、$read_1の内容をvar_dump()して中身を確認。
それが確認できたら、
> $end_1 = end($read_1);//最後の要素を取り出します
の$end_1
> $next_lines = explode("\t",$end_1);//それを分割して配列にしまいます
の$next_lines
> $for_num_lines = array_splice($next_lines,-5,1);//最後から5番目の要素(最後の$num)をとりだします。
の$for_num_lines
> $num = ($for_num_lines[0] + 1);//それに1をプラスします
の$num
をそれぞれvar_dump()して、期待してる動作をしているのか確認する。

それがデバッグの基本。
0202nobodyさん2006/10/27(金) 02:35:51ID:BT8IGUCu
>>192
ぅゎぁ・・・びっくり・・・知らないの?(マジ吃驚)
それと、SEOについて知らないんだったら、口を挟まない方がいいよ。恥の上塗り。

>>200
俺も全くその通りだと思うね。同意。
0203nobodyさん2006/10/27(金) 02:36:19ID:???
>>200
クロール頻度がどれくらいかではなく、クロール頻度をPHPで操作できるかどうかが話題であって、しかも105からの反論がなければ、とりあえずこの場では操作できないでFAになるわけだし。
実装がコロコロ変わる、という結論もありではあるが、ソースのない話なので何とも言えませんな。
別に板違いと称する必要もなかろ。
0204nobodyさん2006/10/27(金) 02:37:28ID:???
>>202
幼稚園児みたいな口調はもう秋田から、ソース持ってこい。
02052012006/10/27(金) 02:38:40ID:???
で、予想だけど、
> $read_1 = file($res_num_dat);//まず、読み込みます。
ここでファイルの中身が読み込めてないと思うよ。
だから常に 0 + 1 になっちゃって結果が 1 なんでしょう。

記事ファイルってentryとかいうディレクトリにあるんでしょ?
読み込み時点ではchdirしてないしファイルパスにもディレクトリくっついてないし、
書き込みのときだけchdirしてるんだよね。
ファイル名の指定の仕方が読み込み時と書き込み時、親記事とレス記事とで
どれもバラバラの手法を使ってるもんだから非常にバグを出しやすいと思う。
こういうのはちゃんと統一しましょう。
書き込み時にわざわざchdirするのはナンセンスだよ。ファイル名のパス指定で十分。
0206792006/10/27(金) 02:40:02ID:Q6o9pTT9
>>201
早くの回答ありがとうございます。

わかりました!
一応$numだけはダンプして見たのですが不十分ぽいですので他にも全て出力して見ます。
0207nobodyさん2006/10/27(金) 02:45:24ID:???
>>202
口を挟まない方がいいよ = 自分に都合の悪い書き込みは理解したくありません
0208nobodyさん2006/10/27(金) 02:47:17ID:???
>>203
SEO対策なんてみんな憶測混じりで色々やってんだから
そういうのは
【SEO】検索エンジン総合スレ22【雑談】
http://pc8.2ch.net/test/read.cgi/hp/1161313398/
で議論してください。
0209nobodyさん2006/10/27(金) 02:50:05ID:???
別にもう議論することもないだろ。
質問者がキモイでFAだ。
0210nobodyさん2006/10/27(金) 02:54:26ID:???
そんなSEO無いとか反論してるやつも同じくらいキモいよ。
0211nobodyさん2006/10/27(金) 02:57:12ID:???
んなこと言ってねーよバカw
0212nobodyさん2006/10/27(金) 03:00:23ID:???
はいはいわろすわろす
0213nobodyさん2006/10/27(金) 03:01:07ID:???
また嵐が増えたな
0214792006/10/27(金) 03:11:02ID:Q6o9pTT9
今更ながら気づきましたが・・・。。

どうやら、親記事のすぐ後の子記事のカウントアップは成功しているようなのです。・・・たぶん。

つまり、このような感じです。
親記事:1
子記事1:2
子記事2:2
子記事3:2
子記事4:2

どうしてかは分かりませんが・・・。
0215nobodyさん2006/10/27(金) 03:30:59ID:???
>>214
親記事直後の番号は元の番号+1じゃなくて常に「START_LINE」の値みたいだけど
これは何番になってるのさ。
0216nobodyさん2006/10/27(金) 03:57:31ID:???
>>79
//
//□子記事書き込み部
//

if($_POST['res']){//子記事(レス)時
  :
  :
  chdir('entry');//ワークディレクトリの変更
}

このchdirをもっと上にもってけ。
もしくはchdirをやめれ。
読み込んでるファイルと書き込んでるファイルが食い違ってるだろ。
(なんか釣りっぽいと感じるの俺だけ?)
0217Name Not Found2006/10/27(金) 04:37:29ID:????2BP(0)
>>79
データを記録するディレクトリを定義しておくとトラブルを起こしにくくなる

[config.php]
define("DATA_DIR",'entry/');
[all.php]
$res_num_dat = (DATA_DIR.$res_num.'.dat');

こんな感じにコードを弄って実験したらこんな結果になった。

test.php?res_num=1

[entry/1.dat]
?1fusianasan1本文localhost
12127.0.0.1
13127.0.0.1
14127.0.0.1

親記事は手動でファイルを作成
02182172006/10/27(金) 04:42:41ID:????2BP(0)
タブ消えちゃった・・・。
\tは/に置き換えてます。

[entry/1.dat]
?/1/名前/1/本文/localhost
1/2////127.0.0.1
1/3////127.0.0.1
1/4////127.0.0.1
0219nobodyさん2006/10/27(金) 05:28:05ID:???
>>217
defineで定義してたところで、場所によって
パスにディレクトリを含めてみたり、chdirしてみたりと
やり方自体をバラバラにしてたら何の意味も無いと思うよ。
それよりはファイル名の生成を関数化する方が先決。
0220nobodyさん2006/10/27(金) 14:10:28ID:AQszo3d9
ロリポやさまざまな共有サーバで使われているsafe modeについて
php.iniで設定したいのですがsafe modeをonする以外に
参考となるURLございませんでしょうか?
0221nobodyさん2006/10/27(金) 14:40:53ID:???
>>1
0222nobodyさん2006/10/27(金) 14:51:25ID:???
ユーザー定義関数中で使うと、
自身の関数名を取得できる関数はありませんか?

ちょうどget_classのような
0223nobodyさん2006/10/27(金) 15:04:29ID:???
IDなんで表示しないで質問してるのかね
0224nobodyさん2006/10/27(金) 15:26:28ID:???
__FUNCTION__でいいんじゃね?
0225nobodyさん2006/10/27(金) 16:00:49ID:???
>>224
ありがとうございます
0226nobodyさん2006/10/27(金) 16:04:47ID:???
Crypt_Blowfishを使ってパスワード ’ jp ’ を暗号化
bin2hexで変換
pack('H*',$hogel)で元に戻す
Crypt_Blowfishを使ってパスワードを復号化

というようなことをしようとしてるんですが、なぜか復号化
したものをもう一度bin2hexにかけると最後に
000000000000という余計なもの(ヌル文字列?)が
ついてしまうんですが、packの戻し方が悪いんでしょうか?
回避するいい方法があれば教えてください<m(_)m>
0227nobodyさん2006/10/27(金) 17:15:26ID:???
>>226
現在のコードとIDを見せれ
0228nobodyさん2006/10/27(金) 17:38:09ID:???
3つある値をそれぞれ別の違う値にして返したいのですが
if($hoge==A){echo "tanaka";}else if($hoge==B){echo "satou";}else if{($hoge==3){echo "suzuki";}
みたいな形だと長いので連想配列ですると
$array=array(A=>"tanaka",B=>"satou",C=>"suzuki");
echo $array[$hoge];
みたいになると思うのですが
これを一行にまとめるかもっと簡略な書き方はありませんでしょうか?
0229nobodyさん2006/10/27(金) 17:51:58ID:???
>>228
なんで簡素化する必要があるの?
長くても見やすいように書くべき。
0230nobodyさん2006/10/27(金) 18:34:33ID:???
>>228
普通に考えたらそれで十分簡素だと思うけどなぁ。
俺だったらむしろ、前半の配列定義をプログラム先頭に置いておいて、
実行部分と分けちゃうけどね。
0231nobodyさん2006/10/27(金) 18:41:58ID:VglO/Vdq
正規表現で = を探したい場合はどうすればいいんですか?
"=" "[=]" "(=)" "\=" とか試したけどだめでした……
02322312006/10/27(金) 18:57:37ID:VglO/Vdq
すみません、解決しました。 文字コードでやったらできました。
0233nobodyさん2006/10/27(金) 18:57:54ID:???
>>231
普通に preg_match('/=/, 〜 で検索できるはずだが。
if(preg_match('/=/', 'aaa=bbb')) echo "OK\n";
でも
if(ereg('=', 'aaa=bbb')) echo "OK\n";
でも結果は「OK」

できないコードを見せてみ。
02342332006/10/27(金) 18:58:40ID:???
orz
0235792006/10/27(金) 19:16:03ID:Q6o9pTT9
みなさん回答ありがとうございます。

>>205
してませんでしたorz
本当に書き込み時しかしてませんでしたorz
早急に直します。。

>>217-218
実験ありがとうございます(ぉ
早速直すべきところは直したいです。

>>219
やはりしておいたほうがいいのでしょうか・・・
いつもコード書いている時間が午前3時とかなんでいつもおかしくなっちゃってあきらめまs(ry

orz

お邪魔になるかもしれませんが、もし直りましたら一応報告したいと思いますです。
0236nobodyさん2006/10/27(金) 19:28:33ID:???
>>229-230
なるほど、ありがとうございました。
0237nobodyさん2006/10/27(金) 19:50:56ID:???
あとで、他人が見てすぐ理解できるってのは大事だな。

テクに走るオナニーは、趣味までで。
0238nobodyさん2006/10/27(金) 20:23:35ID:???
ロックファイルって何ですか?
0239nobodyさん2006/10/27(金) 20:45:15ID:???
ファイル入出力の排他制御用ダミーファイル
0240nobodyさん2006/10/27(金) 20:50:36ID:KqclDjNY
すっげーくだらない質問ですが自分は知らないもので。
どの言語にも共通のこととは思うのですが、
1万行のファイルから特定の内容を行ごとで検索するという処理と
同一ディレクトリにある1万個のファイルに特定の名前の物が存在するか?
というものはどちらのほうがより高速なのでしょうか?
前者はファイルを開いて1行づつ読み込みを、後者はis_file()のような1行です。
前者はメモリを消費して、後者はHDD容量を消費しそうという印象を持っているのですが、速度面では?
0241nobodyさん2006/10/27(金) 20:53:59ID:???
php5.2ってどこからダウンロードできますか・
0242nobodyさん2006/10/27(金) 20:57:45ID:???
>>240
質問じゃなくて実験の丸投げに見えるが
0243nobodyさん2006/10/27(金) 21:00:14ID:???
メールフォーム作成について

ファイルは何種類にわけてますか?
自分はフォーム、チェック、送信と3つにわけてますが、
2つにしぼったほうがいいでしょうか?
それとも1つで完結するべきでしょうか?
0244nobodyさん2006/10/27(金) 21:06:45ID:KqclDjNY
>>242
実験の丸投げに見えてしまいましたか。申し訳ありません。
自分は結果的にどうなのかを知らないのですが、知ってる人にとっては
実験をせずとも当然のことなのだろうと思ったので質問させてもらったんです。
0245nobodyさん2006/10/27(金) 21:08:32ID:???
>>240
そもそも同一ディレクトリに1万もファイルが置けるか、という問題がある。
ls打っても返ってこなくなるよ。
0246nobodyさん2006/10/27(金) 21:23:23ID:???
ですな。どっかで見た文献でLinuxですら膨大な量のファイルを
ひとつのディレクトリに入れた場合、パフォーマンスがかなり落ちるって書いてた。
0247nobodyさん2006/10/27(金) 21:26:00ID:???
FC4で試してみた。
ファイル1万なら余裕。作るのもsshでls取るのも1秒もかからなかった。
0248nobodyさん2006/10/27(金) 21:46:49ID:KqclDjNY
自分が書いた1万という数字は具体的なものでは無いのですが、
ファイルごとに分けてしまうと処理時間は長くなると考えたほうが良いのですね。
ひとつのファイルにまとめて記述をして、そこから検索という形が
容量、速度ともに良さそうということでしょうか。

ファイルごとに分けるというのが、is_fileなどで一発なので、書くのは楽ですが
オーバーヘッドが大きくなるということですか。
0249nobodyさん2006/10/27(金) 21:51:09ID:???
5000と10万じゃ、話が違うかも知れん。
0250nobodyさん2006/10/27(金) 21:58:39ID:FC6M/LoA
php.iniの設定で、[PHP]や「Session]とあるのは何ですか?
この記述は何か機能があるんでしょうか?必要なんでしょうか?
0251nobodyさん2006/10/27(金) 22:01:03ID:???
削除してオケー
0252nobodyさん2006/10/27(金) 22:02:30ID:???
>>250
それはあんまり使わない機能だから消したほうがいいよ。
処理が早くなるからPCの健康にいい。
0253nobodyさん2006/10/27(金) 22:17:06ID:???
>>248

読み書きの仕方によるんでは。

毎回一万行すべて読む必要があるんなら、いっこのファイルにまとめてもいいだろうし。

3000行目と6000行目と6500行目だけアクセスする、とかいうパターンなら
一行いちファイルのほうがいいかもしれないし。
0254nobodyさん2006/10/27(金) 22:31:21ID:KqclDjNY
>>253
自分の書き方が悪かったです。
1万行の場合はその中に特定の1行が存在するかどうかのチェック
1万個の場合はその中に特定のファイルが存在するかどうかのチェック
というものです。
そのあとファイルの書き換えも行うので、その場合は1万個のほうが
オーバーヘッドが少なくて良いのでは無いかと考えているのですが、
1万個もファイルが有る場合のis_file(探したいファイル名)は重くて悪い方法
なのでは無いかということも考えられたので。分けるのが良いのか、まとめるのが良いのか
ということに関して、一般的にどうするのが良いとされているのかが気になりました。
0255nobodyさん2006/10/27(金) 22:32:09ID:kvLwzQNj
>>240
「1万行のファイルから特定の内容を行ごとで検索するという処理」
→そのアルゴリズムを線形検索という。

「同一ディレクトリにある1万個のファイルに特定の名前の物が存在するか」
→ファイルシステム(やOS)による。
バイナリツリーとか、ハッシュテーブルとか、線形検索とか、さまざまなアルゴリズムが使われている。
0256nobodyさん2006/10/27(金) 22:33:17ID:kvLwzQNj
これも参考にしてくれ

大量の画像ファイルを配信するサーバーを作ろうと思っています。
http://q.hatena.ne.jp/1150977803
0257nobodyさん2006/10/27(金) 22:47:29ID:???
>>254
一般的っていう話なら、
is_fileの方はOSとファイルシステムに依存し過ぎるのでまずやらない。
やったとしても独自にインデックス化してディレクトリ掘ってやるとか。
そんな面倒な事するぐらいならマトモなDBに放り込んで安心お手軽に済ますのが一般的。
もちろんシングルファイルで済むならそっちで。
0258nobodyさん2006/10/27(金) 23:00:20ID:KqclDjNY
>>255
>>256
ありがとうございます。とても参考になりました。
ファイルが1万程度で特定のファイルを探して開くというだけの作業だったら
システム任せにして作業するのが効率良さそうという印象でした。
プログラムもシンプル、メモリ消費も少ない、システムに任せた検索で高速と
考えてファイルを沢山という状態にします。
心配な場合は手前でディレクトリを更に分けておくのが良さそうでした。
0259nobodyさん2006/10/27(金) 23:09:47ID:KqclDjNY
>>257
そういえば、というくらいにMySQLなんかの話を忘れていました。
使ったことが無かったので見落としていましたが、調べてみます。ありがとうございます。
0260nobodyさん2006/10/27(金) 23:30:59ID:KHfcRMGS
なんでpostgreは人気がないんですか?
mysqlみたいにライセンスも必要ないし、
postglreなら万が一組み込んでもライセンス違反にはならないのに。
0261nobodyさん2006/10/27(金) 23:57:48ID:???
>>258
実際、数が極端に多すぎなければ検索速度はis_file()の方が平均して速いよ。
一応、ハッシュを使った割とまともな検索アルゴリズムを使ってくれるから。
よほど古くさいOSでなきゃ2〜3万くらいならまだis_file()の方が余裕で速いと思う…

でも非常にシステム依存性が高くて何がトラブルの元になるか分からないんで、
コントロールしやすい仕組みで作るのがやっぱり一般的かな。
0262nobodyさん2006/10/28(土) 00:37:48ID:???
>>260
DB板へ行ってください
0263nobodyさん2006/10/28(土) 00:42:40ID:Y7NdvAT2
register_globals=onはセキュリティ的に推奨されないみたいですが、
グローバル変数を使うこともセキュリティ的にやめたほうが無難でしょうか?
0264nobodyさん2006/10/28(土) 00:53:50ID:???
>>263
あなたは、なぜ register_globals=on に問題があるのか学ぶべき

詳しくは検索すると山ほど出るからそっちに任せる
0265nobodyさん2006/10/28(土) 00:58:05ID:???
>>263
セキュリティは全然関係なく、設計と保守性の問題であまり推奨されない。
適材適所を踏まえて、グローバル変数が必要なシーンで使うのは全く問題ない。
■ このスレッドは過去ログ倉庫に格納されています