【PHP】下らねぇ質問はID出して書き込みやがれ 89
■ このスレッドは過去ログ倉庫に格納されています
0001●
2009/10/11(日) 21:18:54ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0774nobodyさん
2009/11/04(水) 13:18:32ID:+cyJ/kJv同じドライブに複数の人のルートがあると思うけど他人のファイルをunlink()したりできないのは何で?
0775nobodyさん
2009/11/04(水) 13:22:13ID:???PRINT 'マンコ';
}
初めて作ったプログラムがこれ。
0777nobodyさん
2009/11/04(水) 13:31:39ID:???一つはパーミッション。
削除権限はそのファイルが含まれているディレクトリのパーミッションによるが
777とかしてたら消せる。
でもphpだと全ユーザーが同じ実行ユーザーになる場合もあるので
phpのSafeModeを使う。
これは、実行ファイルのオーナー(実行時のユーザーではない)が
他のオーナーのファイルをいじれなくする仕組み。
0778nobodyさん
2009/11/04(水) 16:27:43ID:+cyJ/kJvありがとう。ちょっとググってみるよ。
0779nobodyさん
2009/11/04(水) 17:03:15ID:???基本的にhttpdは拡張子で実行するか決めてるんだから
拡張子で制限すればいいはずだよ。
0780nobodyさん
2009/11/04(水) 17:37:09ID:???phpファイルはアップロード禁止にしたらいいんじゃない?
どうしてもアップロードしたい場合はZIPって手もあるし
0781nobodyさん
2009/11/04(水) 18:05:34ID:???Options -ExecCGI -Includes -MultiViews
php_flag engine off
こんな感じで.htaccessを設定したらCGIとPHPは動かなくなるはず
0782nobodyさん
2009/11/05(木) 02:39:02ID:bdU2dbguというURLでアクセスしたら
http://example.com/ref/index.php?id=abc
の結果を返すにはどうしたらいいですか?
0783nobodyさん
2009/11/05(木) 02:43:08ID:???0784nobodyさん
2009/11/05(木) 02:56:01ID:bdU2dbguありがとう
0785nobodyさん
2009/11/05(木) 09:23:02ID:???PRINT 'パイズリ';
BREAK;
}
二番目に作ったプログラムがこれ。
0786nobodyさん
2009/11/05(木) 10:17:21ID:???print "まんこ\n";
}
print 'な? 9999の次でも1に戻るってことは無いだろ?';
0787nobodyさん
2009/11/05(木) 10:31:55ID:???0788nobodyさん
2009/11/05(木) 12:50:44ID:???0789nobodyさん
2009/11/05(木) 13:16:33ID:???0790nobodyさん
2009/11/05(木) 15:22:19ID:17l6YWCOindex1.php
↑インクルード
user_func.txt
↓インクルード
index2.php
でもこうなるとindex1.phpにアクセスするということはuser_func.txtにもアクセスする事になるので、鯖に負担がかかる。呼び込むファイルが増えればなおさら。
負荷を無くすにはどうしたらいいでしょうか?
個人的にできたらいいなと思うのは、この様な自作関数もメモリ上に置けるようにしてほしい。
最初に鯖を立ち上げた時に読み込んで後は元々ある関数みたいに使いたい。
0791nobodyさん
2009/11/05(木) 15:33:59ID:???実際、どの程度の負荷がかかってるのさ?
一度user_func.txtが読み込まれれば、2回目からはメモリを見に行くから気にしなくて良いレベルだと思うぞ。
0792nobodyさん
2009/11/05(木) 16:22:18ID:17l6YWCOえっ?そうなの?って事はindex.phpとかも一回読まれたらメモリ見るの?
知らなかった。どの位の負荷がかかってるかはどうやって調べたらいい?
最近サイトを開くと重いんだよね。特に夜。LAN内のPCからでも遅いから回線が原因じゃないかと思うんだけど
HDDがあれこれファイルを読んだりして追いついていけないのかもって思って。
CPU仕様率は結構低いんだけど。LANもギガビットLANだし、原因がHDDとしか思えないんです。
0794nobodyさん
2009/11/05(木) 16:55:33ID:???普通は一度ファイルを読み込めば、次回はメモリを参照する。
readで毎回必ずHDDを読んでいたら大変な事になるよ。
CPU使用率がわかってて、DISK周りの負荷は調べてない?
Linuxならiostatとかで見て見なよ、sarが入ってればそれでもいいし。
0795nobodyさん
2009/11/05(木) 16:59:36ID:???ギガビットは過信しないほうがいい
LANカードやHUBがしょぼかったら無意味
転送量が少なくても一度に大量の接続があれば捌ききれなくなる。
0796nobodyさん
2009/11/05(木) 19:35:22ID:???世の中にはキャッシュと言うものがあってだな・・・
てか、HDDからの読み込みが気になるくらいでかいファイルなのか?そのスクリプト。
0797nobodyさん
2009/11/05(木) 20:31:20ID:17l6YWCOOSはWindowsなんだけど、とりあえずHDDをSSDとか1万回転のHDDに変えたら速くなりそうな気がするんだよね。
ルータやLANケーブルはそれなりのやつを使ってるけど。
実際商用のサーバーってどうやって負荷計ってるの?そういうフリーソフトないかな?
何を改善すればいいか分からん。
>>796
スクリプトはでかくないよ。ただ動画のダウンロードが多い。これが遅延の原因かも。
あとデータベースとOSのドライブは別のドライブにした方が速い?パーティションじゃなくて完全に個別という意味で。
0798nobodyさん
2009/11/05(木) 23:07:04ID:???流石にスレ違いだろ。
DISKは複数あったほうが速いにきまっとる
書いてるようにOSとDB分けたほうがいい。
0799nobodyさん
2009/11/05(木) 23:39:13ID:???PHPのファイルは、OSによってディスクから内容がメモリに読まれた上で、インタプリタによって機械語にコンパイルされ、実行される。
ここまでが基礎知識。
で、まず、今どきのOSはディスクからの読み込みをキャッシュする。
つまり、一度読んだファイルはメモリにそのまま持っておいて、更新がなければ次回以降はそいつを使う。
次に、APCやeアクセラレータといったPHP関連ライブラリを使うと、機械語にコンパイルされたコードを使いまわしてくれるようになる。
0800nobodyさん
2009/11/05(木) 23:55:44ID:???NICかHubが壊れかけてるとか?
とりあえず遅延がどの時点で発生しているのか調べないと。
なんかPHPが原因じゃないっぽい感じがする。
0801nobodyさん
2009/11/06(金) 15:02:27ID:uY82lX0BSystem.out.printlnで
あれ、デバッグですごく便利なんだけど、
EclipseでPHPでできないのかな
0802nobodyさん
2009/11/06(金) 15:30:23ID:+6dsWJpThttp://www.madirish.net/?article=245
上記を参考にPostgreSQLで作ってみました。
BL取得→DBに保存→webから利用があったらmd5してdbにSELECT発行
という形で作ってみたのですが、BL取得→DBに保存
ここまで上手くいって294,830件のハッシュがDB内に存在する所までは確認できました
ところが実際にwebから本家GoogleSBでBL入りしているようなドメインを送ってもBL判定されません。
どなたかMySQL環境がある方、このソースをまんまで試してみて頂けますでしょうか…。
例として下記
http://www.google.com/safebrowsing/diagnostic?site=4gameranking.com
0803nobodyさん
2009/11/06(金) 21:29:10ID:qkr//tmUif(isset($val))かif(!empty($val))
と
if($val != "") か if($val <> "")
では、どちらの方が処理が速いのでしょうか?
0805nobodyさん
2009/11/06(金) 23:17:02ID:???Cのコードを読んでみないとなんとも言えないが、もっとも処理の少ないであろうisset()が最速だと思う。
だけど、そんな速度差を気にしないといけないような案件でPHPを使うほうが間違っているので、どうでもいい。
0806nobodyさん
2009/11/06(金) 23:29:19ID:vBz8RCVvそこでクラスについて勉強したいと思うのですが
フレームワークを覚える前にクラスの使い方を覚えると楽になりますか?
OOP、デザインパターンを覚えてからフレームワークに入るのが王道でしょうか?
プログラミングはPHPが初めてでクラスの基本的なものは分かるのですがクラスだけは敷居が高くて勉強してきませんでした
0807nobodyさん
2009/11/06(金) 23:33:04ID:???フレームワークの使い方だけ学べばいいんじゃないかな。
どこにファイルを置いて、こういう名前にして、どういうAPIがあって・・・みたいな。
0808nobodyさん
2009/11/06(金) 23:34:14ID:???0809nobodyさん
2009/11/06(金) 23:34:43ID:vBz8RCVv{
private $word = "こんにちは世界さん(^^)";
function view() {
return htmlspecialchars($this->word, ENT_QUOTES);
}
}
$obj = new hello_world();
echo $obj->view();
0810nobodyさん
2009/11/06(金) 23:38:43ID:vBz8RCVvcakePHPもなんかドキュメントの通りやりましたがこのファイルにこれを書けという意味が理解できなかったため挫折しました
smartyはサンプルみて挫折しました
0811nobodyさん
2009/11/06(金) 23:41:26ID:???0813nobodyさん
2009/11/06(金) 23:53:40ID:???0814nobodyさん
2009/11/06(金) 23:54:01ID:vBz8RCVvprotected
private
が使えます
0815nobodyさん
2009/11/06(金) 23:54:54ID:???あとSmartyはFWでないしな
0816nobodyさん
2009/11/06(金) 23:59:14ID:???ZendFrameworkはドキュメントがたくさんあってまだ読んでないです
フレームワークって新しい言語を覚えるような感じですね
気合入れないとだめですね
0817816
2009/11/06(金) 23:59:56ID:vBz8RCVv0818nobodyさん
2009/11/07(土) 01:02:50ID:???がんばれ!
0819nobodyさん
2009/11/07(土) 01:04:33ID:???0820nobodyさん
2009/11/07(土) 10:59:11ID:HHoKTIgI$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}
検索する文字が検索対象に一致するか調べたいと思います。
上のように対象をforeachで回して$valに対象の文字列と一致するか
調べる方法が一番簡単だと思いますが、
検索する文字が複数ある場合、何回も上記の事をしなければいけません。
もう少し効率の良い書き方はないでしょうか?
0822nobodyさん
2009/11/07(土) 11:32:59ID:HHoKTIgI0823nobodyさん
2009/11/07(土) 12:00:25ID:???$txt = "aaazzzccc";
if (strstr($txt,$a)) echo "一致\n";
}
$search = array("aaa","bbb","ccc");
$p = array_map("a",$search);
0824nobodyさん
2009/11/07(土) 12:23:34ID:???別にarray_mapなんか使わなくても単にforeachの二重ループにすればいいのでは?
0825nobodyさん
2009/11/07(土) 12:35:53ID:???0826nobodyさん
2009/11/07(土) 14:40:11ID:???0827nobodyさん
2009/11/07(土) 14:42:27ID:???0828nobodyさん
2009/11/07(土) 15:07:14ID:???質問では配列に格納された文字列が、変数に格納された含まれているかチェックする
おk?
0829nobodyさん
2009/11/07(土) 15:09:30ID:PiVKZwA7検索しても複数ページの遷移の件などがヒットして、複数のQuickFormをSmartyに渡す方法が出て来ません
0834nobodyさん
2009/11/07(土) 17:06:46ID:???質問者が少々日本語でおkなんだよ。意訳すると
「検索文字列が検索対象に含まれていたら何らかの処理をする、と言うロジックを
検索対象が複数だった場合にスマートに書きたい」
って事だろうからな
0835nobodyさん
2009/11/07(土) 17:09:04ID:???$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}
↑
これをin_arrayを使ってどう書くのか激しく興味あるんだけど
0836nobodyさん
2009/11/07(土) 17:13:26ID:???foo($a, array(2,8,9));
てやったとき、両方に2が含まれてるからtrueが返って欲しいんだろうな。
if($a!=array_diff($a, array(2,8,9)))
ってどうよ?
0837836
2009/11/07(土) 17:14:31ID:???0838nobodyさん
2009/11/07(土) 17:19:55ID:???0840nobodyさん
2009/11/07(土) 22:43:03ID:CwxQOSeKclass test
{
const hiru_aisatu = "こんにちはっ!!";
const yoru_aisatu = "こんばんは・・・";
const hurarerutoki = "さようなら・・2度と会わないで";
}
echo test::hiru_aisatu;
こんなかんじで書くのと
$hiru_aisatu = "こんにちはっ!!";
$yoru_aisatu = "こんばんは・・・";
$hurarerutoki = "さようなら・・2度と会わないで";
echo $hiru_aisatu;
というふうに書くのはクラス使うほうがスピードは遅い?ような気がするのですが
複数人でコード書く場合はクラスでconst使ったほうがいいでしょうか?
0841nobodyさん
2009/11/07(土) 23:45:33ID:???0842nobodyさん
2009/11/07(土) 23:57:06ID:???0844nobodyさん
2009/11/08(日) 02:32:54ID:35LWJ8zbhoge_func($a)
でも
hoge_func($a,$b,$c,$d,$e,$f)
ただし
function hoge_func($a=null,$b=null...
とは違う方法で
0845nobodyさん
2009/11/08(日) 02:56:24ID:???0846nobodyさん
2009/11/08(日) 06:59:04ID:???http://php.net/manual/ja/functions.arguments.php
0847nobodyさん
2009/11/08(日) 08:26:26ID:H7unfEmKこれまでに紹介された本の一覧ページで、同じ紹介者の本が連続して出ないようにしたいです。
たとえば登録時に10冊まとめて登録できる場合、主キーのIDを表示時のソートのキーにしたら
同じ人の紹介した本ばかりが一画面に出ることになります。
これを防ぐにはどうしたら良いですか?
登録時にランダム数を入れるカラムを作って、それをキーにして表示するのか、
それともPHPだけで出来るでしょうか?
0849nobodyさん
2009/11/08(日) 09:04:36ID:H7unfEmKうおおお、凄い! そんなのがあるんだ?
やっぱり聞いて良かったです。ありがとう!
0850nobodyさん
2009/11/08(日) 10:30:15ID:atd+IQXc{
public $v = "test";
public function display() {
return $this->$v;
}
}
$obj = new test;
echo $obj->display();
testと表示させたいのですが表示できません
PHP5.3です
どなたかご指導お願い致します
0851nobodyさん
2009/11/08(日) 10:39:14ID:???class Greeting{
const AT_MORNING = 'おっはー☆';
const AT_DAYTIME = 'こんにちは';
const AT_NIGHT = 'こんばんわー';
const FIRST_MESSAGE = '初めまして';
}
class Love{
const FIRST_MESSAGE = '好きです!';
const END_MESSAGE = 'さようなら…二度と会わないで';
}
echo Greeting::AT_MORNING;
例えば定数の場合、そこまでに通ったコードを全部読んで、定義部を探さないといけない。
クラス定数ならば、格納先のクラスさえ分かれば、そこを探すだけで済む。
勿論、「定数はこのファイルに全部書くこと!」という規則で運用しても同じような効果になるが、「立ち入り禁止」というルールだけ設けるのと柵を作るの、どっちが安全かの差だな。
また、Greeting::AT_MORNINGを読むにはGreetingクラスの存在を知らなければ(requireしなければ)ならない。
つまり、この定数を使っている箇所がどこら辺にあるのか特定しやすい。
あとは、全体から見える位置にものを定義すると、変数名被りや定数名被りが発生しやすい。クラス定数なら、クラスさえ違えば同名になっても問題ない。
0852nobodyさん
2009/11/08(日) 10:41:21ID:???エラー出力見ようよ。たぶんこの場合ずばりのエラーが出てる。
return $this->$v;
の、vには$要らない。
0853nobodyさん
2009/11/08(日) 10:41:44ID:???だと そのクラス内($this)の変数$vが持ってる値の変数になっちゃう
return $this->v
がただしい
0855nobodyさん
2009/11/08(日) 10:46:05ID:atd+IQXcありがとうございます
おかげ様で解決できました
>>852-853どうもありがとうございました
0856nobodyさん
2009/11/08(日) 10:55:19ID:R5NqdoKRここ見て勉強してます
ttp://php.net/manual/ja/language.oop5.php
目次
* はじめに
* クラスの基礎
* Properties
* オブジェクト定数
* クラスのオートローディング
* コンストラクタとデストラクタ
* アクセス権
* Object Inheritance
* スコープ定義演算子 (::)
* static キーワード
* クラスの抽象化
* オブジェクト インターフェイス
* オーバーロード
* オブジェクトのイタレーション
* パターン
* マジックメソッド
* finalキーワード
* オブジェクトのクローン作成
* オブジェクトの比較
* タイプヒンティング
* 遅延静的束縛 (Late Static Bindings)
* オブジェクトと参照
* Object Serialization
この目次を上から順番にやりたいのですがどこまでが基礎の部分でしょうか?
0857nobodyさん
2009/11/08(日) 11:46:29ID:???0859nobodyさん
2009/11/08(日) 11:58:07ID:???あぼ〜ん
858 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
あぼ〜ん
0860nobodyさん
2009/11/08(日) 12:02:22ID:???staticまで知ってればとりあえず問題ない
0861nobodyさん
2009/11/08(日) 12:12:54ID:???「オブジェクト指向の覚え方」(というか学び方)を知りたいんですね?
まずは、
とある言語が「オブジェクト指向的な記述を支援してくれる部分」と、
「オブジェクト指向というもの」自体とを
弁別した方が良いかと。
とある言語で後者を実践するときのものが前者。
そのページで得られるのは、基本的には前者のみ。
OOPそのものへの入門だったら、PHP以外の例えばJavaあたりを使ってOOPの
解説してるとこ覗いた方が良いよ。
それでもその質問に答えるとしたら、上から順番でどこまでってことは無いかな。
>* クラスのオートローディング
↑飛ばしてもいいけど、
>* コンストラクタとデストラクタ
↑飛ばせない
てな感じで。
0862nobodyさん
2009/11/08(日) 12:30:58ID:???使いこなすにはまだまだだけど
0863nobodyさん
2009/11/08(日) 12:34:58ID:???0865nobodyさん
2009/11/08(日) 12:52:04ID:???JavaのOOPを持ち込むのは、混乱の元だろう。
頭固くなるからやめとけ。
初心者はSqueakでもやっとけばいい。
0866nobodyさん
2009/11/08(日) 13:33:48ID:9EHY5xphclass SimpleClass{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
$instance = new SimpleClass();
$className = 'Foo';
$instance = new $className();
ってマニュアルにサンプルが載ってますが
下から1〜3行を
$obj= new SimpleClass();
で済ましたほうが楽だと思うのですがどうなんでしょうか
どなたかご教示お願いします
0867nobodyさん
2009/11/08(日) 13:36:52ID:???0868nobodyさん
2009/11/08(日) 13:41:42ID:9EHY5xphhttp://www.php.net/manual/ja/language.oop5.basic.php
例3 インスタンスを作成する
<?php
$instance = new SimpleClass();
// 変数を使うこともできます
$className = 'Foo';
$instance = new $className(); // Foo()
?>
0869nobodyさん
2009/11/08(日) 13:46:05ID:???autoloadしたい時とかFactoryパターンの時とか
0870nobodyさん
2009/11/08(日) 13:48:04ID:???可変変数の一種だ
0871nobodyさん
2009/11/08(日) 13:52:41ID:???http://www.php.net/manual/ja/functions.variable-functions.php
0873nobodyさん
2009/11/08(日) 17:28:03ID:???クラスってのはクッキー生地の型抜き用の型で、
インスタンスはそれで作られた個別のクッキー(生地)。
抜き型だけあってもそれを使わないと(newしないと)食えるクッキーの存在は生成されない。
てな感じでどうだ?
■ このスレッドは過去ログ倉庫に格納されています