【PHP】下らねぇ質問はID出して書き込みやがれ 88
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/16(水) 09:39:37ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0693nobodyさん
2009/10/04(日) 01:40:39ID:???http://www.unitycorp.co.jp/si/acard/ram_disk/ans-9010/index.html
フェラーリとか言った奴はシメジ。
0694nobodyさん
2009/10/04(日) 01:46:31ID:???ディスク装置が備えるべき高信頼性、高可用性、高保守性と
ディスクキャッシュのサイズは関係ないしな。
うちの製品はソフトウェア設計がカスなんで32GBのディスクキャッシュが
意味を持つかもしれんがw
0695nobodyさん
2009/10/04(日) 01:47:25ID:???>>643のエラーは SG(request_info).content_length > SG(post_max_size) の時だけ出る。
んで exceeds the limit of 536870912 bytes のバイト数は post_max_size の値。
>>660では1GB弱と認識されてるが、エラーが出るスクリプト上で phpinfo() してみたか?
0696nobodyさん
2009/10/04(日) 02:01:05ID:???0697nobodyさん
2009/10/04(日) 02:01:55ID:???http://www.thosp.com/PC/RAID/ANS_9010_RAID_ICH10R/
http://www.thosp.com/PC/RAID/ANS_9010_RAID_Adaptec/
このレベルでウチのDB動かしてみたいわ・・・
0699nobodyさん
2009/10/04(日) 07:13:27ID:???そりゃ他言語になめられるわ
0701nobodyさん
2009/10/04(日) 10:08:44ID:???OS上のメモリをキャッシュと言われてもな・・・
うちは政治的な理由でDBはOracleしか使わないので、DISK装置もこういうのしか使わない
でこのレベルのDISK装置でもキャッシュは4GBしかない。
そしてこのレベルで1000万超えだよ。
http://www-06.ibm.com/systems/jp/storage/products/disk/ds6000/ds6000.shtml
0702nobodyさん
2009/10/04(日) 10:18:29ID:???0703nobodyさん
2009/10/04(日) 10:18:57ID:???0704nobodyさん
2009/10/04(日) 10:20:25ID:???0705nobodyさん
2009/10/04(日) 10:23:32ID:???0706nobodyさん
2009/10/04(日) 10:28:58ID:???リリースが来年末だから今のうちから使っとけという事らしいorz
0707nobodyさん
2009/10/04(日) 10:36:33ID:???もっともunicode対応で手こずってるから1年後も出てないかもしれんが…
0708nobodyさん
2009/10/04(日) 10:38:01ID:???0709nobodyさん
2009/10/04(日) 10:43:18ID:???0710nobodyさん
2009/10/04(日) 11:33:28ID:BwS37vJUストレージ装置の高可用性とディスクキャッシュのサイズは
無関係だって>>694でいってんじゃん。
あと、DBのように局所参照性が強いファイルアクセスについては
キャッシュ増加に対するヒット率の向上はある閾値を超えたあたりから
急速に鈍化するから32GBに意味があるなんて主張してない。
むしろRAMの増加は装置全体の故障率の上昇に繋がるから、あえて
RAMの容量を絞るってのもディスク装置の構成としては正しいかもしれない。
んで、その装置のキャッシュをディスクキャッシュと認めるなら、
PC Linuxで作ったファイルサーバーのメモリもページキャッシュも
情報工学の定義上は立派な「ディスクキャッシュ」ですが?
「ディスクキャッシュのサイズを32GBにすること」だけが要件なら、
フェラーリが必要なほどの金がかかるわけねーぞ、という話なのに、
1000万円台で4GBキャッシュの装置の存在を示して何を主張したいの?
0712nobodyさん
2009/10/04(日) 11:52:16ID:???0714nobodyさん
2009/10/04(日) 11:59:56ID:???php6は今からでも言語仕様変わるかもしれないから危険過ぎるだろ
来年末リリースって事は大規模プロジェクトだろ??
0715EM114-48-151-94.pool.e-mobile.ne.jp ◆ooIHwxrYyg
2009/10/04(日) 12:00:25ID:+Jd1EQ8S男ならIP出してID出してコテハン付けろ!
0717EM114-48-151-94.pool.e-mobile.ne.jp ◆ooIHwxrYyg
2009/10/04(日) 12:51:26ID:+Jd1EQ8Sくたばれ社会のクズが!
0718nobodyさん
2009/10/04(日) 13:19:46ID:tlZK7xE+このコマンドはPHP4.X.X以前だと動く、とかよく書いてあるんだけど
そんな古いPHPのバージョン使わないといけない状況って実際にあるの?
PHP4からPHP5にメジャーチェンジした場合なんかは
その時点でコードもPHP5に変えるんじゃないの?
ちょっとした手直しくらいならそのままにしとくかもしんないけど
その後の生産効率を考えると変えた方が楽でしょ?
0719nobodyさん
2009/10/04(日) 13:20:12ID:???0720nobodyさん
2009/10/04(日) 13:23:27ID:???0721nobodyさん
2009/10/04(日) 13:36:33ID:???0722nobodyさん
2009/10/04(日) 13:41:39ID:???動きゃーいいってレベルのはバージョン変わっても変えない
0723718
2009/10/04(日) 13:50:04ID:tlZK7xE+>>721
怖いんでなるべく使わないようにします
>>722
いつか誰かが変えるだろうってのがあるんでしょうね
0724nobodyさん
2009/10/04(日) 13:58:41ID:MEZU4PyM凄腕の天然釣り師登場?
0725nobodyさん
2009/10/04(日) 14:13:23ID:???メインメモリに1GBのSRAM
容量は少ないが一度は使ってみたいものだ
0726nobodyさん
2009/10/04(日) 14:16:16ID:???俺はサーバリプレイスをよくやってる。
リプレイスする理由はスペック不足とかリース切れなどの理由
ハードを変えるからついでにOSも上げる場合が多い(RHEL4から5とか)
でもプログラムまで変更する余裕が無い場合が多く、古いPHPを使わざる得ない。
register_globals=on前提のシステムも驚くほど多いよ
いつか変えなきゃと思っても、今まで問題無く動いているモノになかなか費用はかけられない現実
一応指摘はするけど、「まぁしょうがないですよね」で終わる。
0727718
2009/10/04(日) 14:28:25ID:tlZK7xE+ありがとうございます
>今まで問題無く動いているモノになかなか費用はかけられない現実
やっぱりそういう理由ですか
ではPHP4.X.Xの記法も一応知っておかなきゃですね
0728nobodyさん
2009/10/04(日) 14:28:59ID:XbHwbnY60729nobodyさん
2009/10/04(日) 14:53:58ID:???HDDのメモリ32GBってどんだけ多いの?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0730nobodyさん
2009/10/04(日) 14:55:45ID:???0731nobodyさん
2009/10/04(日) 14:58:16ID:???0732nobodyさん
2009/10/04(日) 16:11:53ID:PUBs4o84たぶんここまでコード数少ないのは国内初めてだと思います
どなたか採点お願いします
<?php
// キャッシュ生成
function kyasshu($file) {
$fp=fopen($filename,"w");
flock($fp,LOCK_EX);
fwrite($fp,$file);
fclose($fp);
}
// 出力
function shuturyoku($kyasshufile) {
echo $kyasshufile;
}
?>
0733nobodyさん
2009/10/04(日) 16:23:33ID:???一瞬釣りだと思ったけど、
言われてみれば究極的にはそういうことだよな。
今フレームワークの改良をしているところなんだが、
おかげで良いアイデアがヒラメイタ。
ありがと。
0734nobodyさん
2009/10/04(日) 16:40:51ID:???>$fp=fopen($filename,"w");
?
0735732
2009/10/04(日) 16:45:38ID:???あ
改良
function kyasshu($file) {
if (タイムスタンプの比較)
$fp=fopen("kasshu.html,"w");
flock($fp,LOCK_EX);
fwrite($fp,$file);
fclose($fp);
}
}
// 出力
function shuturyoku() {
echo file_get_contents("kyasshu.html");
}
0736732
2009/10/04(日) 16:46:35ID:???0737nobodyさん
2009/10/04(日) 16:50:45ID:???0738732
2009/10/04(日) 16:52:38ID:???shuturyoku();
2行を書きっぱなしでおk
あとはファイルを更新するだけでおk
0739732
2009/10/04(日) 17:02:12ID:???自由に使ってください^^
0740nobodyさん
2009/10/04(日) 17:28:00ID:???0741nobodyさん
2009/10/04(日) 17:31:22ID:???0742nobodyさん
2009/10/04(日) 19:08:52ID:???PHPやってるなら2次だとJK
0743nobodyさん
2009/10/04(日) 19:41:37ID:???具体的にはどんな感じになりますか?
0744nobodyさん
2009/10/04(日) 19:51:40ID:XbHwbnY60745nobodyさん
2009/10/04(日) 19:55:31ID:???0746nobodyさん
2009/10/04(日) 20:09:08ID:???強制されるべきと考えるほうが正しいな
俺は小学6年のとき、便所のカギを中から閉めて壁をよじ登り上から脱出できる技を閃いて
学校の女子トイレすべてそれをやったら、
時間外にテストを受けてトイレに行った女子が用を足せなくて漏らしちゃって大問題
当然俺は死にたくなるくらい叱られて、それ以来そういうバカな行動はとらないと心に決めた
いっぺん死ぬほど叱られるか、罰を受けるかしないとだめだな
奇行癖のある人間は
0747nobodyさん
2009/10/04(日) 20:14:50ID:???0748nobodyさん
2009/10/05(月) 02:00:37ID:???0749質問
2009/10/05(月) 07:25:13ID:bFH+sh6Gclass obj implements arrayaccess {
public function offsetSet($offset, $value) {
var_dump(__METHOD__);
}
public function offsetExists($var) {
var_dump(__METHOD__);
if ($var == "foobar") {
return true;
}
return false;
}
public function offsetUnset($var) {
var_dump(__METHOD__);
}
public function offsetGet($var) {
var_dump(__METHOD__);
return "value";
}
}
$obj = new obj;
var_dump(empty($obj["foobar"]));
?>
・・・この結果が
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
bool(false)
になる流れを教えてください。
まず、empty($obj["foobar"])なので、offsetExists("foobar")が呼ばれて、
($var == "foobar")が真なのでtrueが返り値になりますよね? ←ここまでは自信あり
次に、offsetGet(true)が呼ばれて、(評価はどうであれ)"value"が返り値になるんですか??
最後にempty("value")になって、「"value"が入っているんで空じゃないよ」ということでfalseになる、ということですか???
0750nobodyさん
2009/10/05(月) 09:14:20ID:???offsetExistsで$varは foobarではないので falseになります。
0751nobodyさん
2009/10/05(月) 10:00:19ID:OAxwPoQMよく見るのは、(システム名・略語)_(機能名)と言うのです。
例えば、Zend_Mailとか。
他には機能名だけ書く場合もありますが、毎回どういう名前にすれば
後々わかりやすいだろうかと悩みます。何か法則とかあるのでしょうか?
0752nobodyさん
2009/10/05(月) 10:30:55ID:???愛称にしない。
スペル間違えない。
0753nobodyさん
2009/10/05(月) 10:44:37ID:???0755nobodyさん
2009/10/05(月) 10:46:43ID:???0756nobodyさん
2009/10/05(月) 11:46:32ID:X54Rskkj現場ごとにルールがあったりするよ。
なければあなたの言うようなのが一般的かと
0757749
2009/10/05(月) 12:56:00ID:KN+hGN3yありがとうございます。
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
という順番から推測しますと
offsetExists の var_dump(__METHOD__); が実行された「後」の if ($var == "foobar") で
offsetGet が呼ばれてfoobarからvalueに変更され、
最後はoffsetExistsがfalseを返すんですね。
すみません、それを踏まえてもう一つ質問です。
var_dump(empty($obj["foobaz"]));
にした場合、結果が
string(17) "obj::offsetExists"
bool(true)
になるんですけど、これがoffsetGetを呼ばない理由が分かりません。
しかも($var == "foobaz")じゃないのに、結果はtrueです。
分かりますでしょうか?
0758749
2009/10/05(月) 13:00:35ID:KN+hGN3y($var == "foobaz")じゃないのに、結果はtrueです。
↓
実際は ($var == "foobaz") で
($var ≠ "foobar") なので
評価式は偽となってfalseが返されるだろうはずなのに結果はtrueです。
0759nobodyさん
2009/10/05(月) 13:28:36ID:???0761nobodyさん
2009/10/05(月) 14:54:27ID:???0762nobodyさん
2009/10/05(月) 15:43:53ID:???俺はJava風につけてる
FileNotFoundExceptionみたいに
単語別に先頭に大文字をつける感じで
0763nobodyさん
2009/10/05(月) 16:31:42ID:???empty($obj["foobaz"]);
ってのは
!$obj->offsetExists('foobaz') || !(bool)$obj->offsetGet('foobaz')
と等価
0764749,750,757
2009/10/05(月) 18:40:09ID:KN+hGN3yいえいえ、でも、為になりました。
>>763
なるほど、この炉利ORは短絡評価が適用されるので
!$obj->offsetExists('foobaz') が true であれば
!(bool)$obj->offsetGet('foobaz') の評価がなんであろうが
全体の評価は true になるんですね。
では、前回の問題に戻りますが、
var_dump(empty($obj["foobar"]));
の結果が
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
bool(false)
になるというのは、まず、!$obj->offsetExists('foobar') が false になるので
短絡評価にならずに !(bool)$obj->offsetGet('foobar') の評価が必要となるんですね。
!(bool)$obj->offsetGet('foobar') は (bool) に型変換されてますが
""以外の文字列はすべて true と評価されるので
ここの返り値 'value' も true と評価されるんですね。
それが ! で反転して false ということですね。
false || false = false
ということで bool(false) ですね。
ありがとうございました!
0765nobodyさん
2009/10/05(月) 18:49:30ID:qMw9OmRLどのような手順で見れば、ソースが分かるでしょうか?
例えば、substringの関数のソースを見るための手順を教えて頂けないでしょうか?
宜しくお願いします。
0766nobodyさん
2009/10/05(月) 18:50:44ID:qMw9OmRL失礼しました。宜しくお願いします。
0767nobodyさん
2009/10/05(月) 18:51:11ID:yHTqrIVVHTTPヘッダーを送信するタイミングで、手動でクッキーを設定したいと思い、質問しました。
0768nobodyさん
2009/10/05(月) 18:55:19ID:???hook 系の処理はない。出力内容は、PHP側で、echo された
文字列やheader関数、cookie 系の関数または、session 系
の関数などの結果を常にバッファしており、必要なときに、
PHP側で出力順序を判断してから送信される。
ヘッダ出力直前に処理を行いたいのであれば、処理の最後に
関連の処理を記述することだと思う。
0769nobodyさん
2009/10/05(月) 19:41:05ID:???ガーン。残念。
> ヘッダ出力直前に処理を行いたいのであれば、処理の最後に
> 関連の処理を記述することだと思う。
これって難しくないですか?
MVCがきれいに分離できていて、フロントコントローラパターンをちゃんと使っていれば、簡単にできるんでしょうけど。
PHP4の時代から残っているようなごちゃごちゃしたソースだと、難しいです。
0770nobodyさん
2009/10/05(月) 19:43:25ID:???0771nobodyさん
2009/10/05(月) 22:59:39ID:???ob_start();
require("unko.php");
header("Set-Cookie云々");
ob_end_flush();
0772nobodyさん
2009/10/05(月) 23:14:52ID:cxXnIhTs【PHPのバージョン】PHP Version 5.2.9
【連携ソフトウェア】
【質問内容】
blogの背景画像をランダムに表示させたく思い、phpを勉強しています。
とりあえず画像を表示させてみようと、以下の文を書きました。
<?php
$imgpath="img/common/header.jpg";
readfile($imgpath);
?>
これで画像は表示されたのですが
header('Content-Type: image/jpeg');などの表記もしたほうがいいのでしょうか?
0773nobodyさん
2009/10/05(月) 23:31:32ID:IP5avodC画像だけを出力するならあったほうがよい
0774nobodyさん
2009/10/05(月) 23:38:29ID:cxXnIhTsなるほど、ありがとうございます
0775nobodyさん
2009/10/06(火) 00:09:14ID:???どっちにしてもContent-Typeは必ず要るぞ
0776772
2009/10/06(火) 00:33:26ID:xjSaXbC3ありがとうございます
header('Content-Type: image/jpeg');の挿入位置ですが、readfile()の直前で問題ないでしょうか?
<?php
$headimgdir='img/header/';
$dn=opendir($headimgdir);
while($file=readdir($dn)){if($file!='.' && $file!='..'){$files[]=$file;
// echo "ファイル名:$file<br>";}}
closedir($dn);
$imgnum= array_rand($files);
$imgpath=$files[$imgnum];
header('Content-Type: image/jpeg');
readfile($headimgdir.'/'.$imgpath);
?>
0777nobodyさん
2009/10/06(火) 00:33:28ID:AOFtA4fUってのがあって、それを再評価するってのはどうやるんだっけ?
eval以外にやり方ありましたっけ?
0779772
2009/10/06(火) 00:56:55ID:xjSaXbC3ありがとうございます、助かりました。
0780nobodyさん
2009/10/06(火) 02:21:00ID:BEe+JBrPそこで相談です。
Pagerって、最初に対象の検索結果rowを全部取得して、その行数を指定した一ページ当たりのアイテム数で割って
リンク部分を出力し、以降のページでは最初にとった全アイテムの連想配列を元にリストをつくったりしてるんだと思いますが、
最初に全部取得するのが気に入らないです。なので、
1)ページリンクを作るために全体の件数は欲しい
2)でも、全部の行を取得するなんて無駄はしたくない、最低限のrowの実データだけ取得したい
各ページでそれぞれ必要なアイテムをその都度取得したい
1ページ10アイテムでpageId=2なら where itemId>$pageId*10 and itemId<$pageId*10+10 みたいな…
という要望を満たそうと思ったら、アイテムの実データを用意したテーブルとは別に、数だけをカウントするテーブルを
別に作らないといけないんでしょうか?
それだと単純にデータベースの話になっていまいますが、PHPのプログラム的に解決する方法はありますか?
それとも、こんな試み自体、意味ないでしょうか? 全部のデータを取得するなんて負荷になりそうだなぁという考えからですが。。
環境はPHP5.2.8 MySql5です
0781nobodyさん
2009/10/06(火) 02:48:02ID:???0782nobodyさん
2009/10/06(火) 03:00:16ID:BEe+JBrPそれってmysql関数って言うんでしょうか? 全くそっち系はわからないので。。
なるほどー 確かにそれを使えば簡単ですね! ありがとうございました
0783nobodyさん
2009/10/06(火) 08:52:12ID:ldSI1eNeブラウザで解釈できるからgif,jpgはなくてもおk
ただ書いておいたほうがまし
0784nobodyさん
2009/10/06(火) 09:45:06ID:???PEAR::Pagerつかってるけど、全件取得しないよ。
全件数を取得するのにselect count(*)はするけど
個々のレコードはlimit使ってページ毎にそのページに表示する分しか取得しない
0785nobodyさん
2009/10/06(火) 10:25:01ID:kghRGofU使い方が分からずググったら、こういう感じで設定すれば良いとあり
$matrix = array(array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1));
imageconvolution($img, $matrix, 8, 0);
実際シャープはかかったのですが、もう少し弱くかけたいのです
それで値を変更してみると真っ黒になってしまいます
どのように調整すればよいのでしょうか?
0787nobodyさん
2009/10/06(火) 12:12:24ID:BEe+JBrPあ、そうなんですか?
ありがとうございます、解決しましたw
0790nobodyさん
2009/10/06(火) 13:31:23ID:FPrhzfOJ<table>
<?php
foreach($_POST as $key=>$var) {
echo "<tr><td>".$key."</td><td>".$var."</td></tr>\n";
}
?>
</table>
のようにフォームから受け取ったnameとvalueの一覧を表示させるのはできるのですが、
それを下記のようにmysqlに挿入するのに良い方法はないでしょうか?
$sql="INSERT INTO `database`.`table` (`name1`, `name2`,…`, `namen`) VALUES ('value1', value2',…, 'valuen');";
$result = mysql_query($sql, $con) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
いちいち$a=$_POST["name1"];$b=$_POST["name2"];って書いてVALUES ('$a', $b',…を手書き入力してましたが
もっとスマートな方法ないかな…と
0791nobodyさん
2009/10/06(火) 13:46:57ID:???0792786
2009/10/06(火) 13:57:30ID:???人にテストやらせんじゃねぇよ、死ね!
と思ったら俺の間違いじゃねぇか!
済みませんでした
省略したらapplication/octet-streamで扱うんじゃねぇの…
>>786訂正
header('Content-Type: ...') を指定しないと default_mimetype (デフォでtext/html) が
送信されるからContent-Typeを無視するIE以外で表示できません
■ このスレッドは過去ログ倉庫に格納されています