【PHP】下らねぇ質問はID出して書き込みやがれ 114
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/01/02(月) 02:03:25.50ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 113
http://kohada.2ch.net/test/read.cgi/php/1322564127/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0233nobodyさん
2012/01/05(木) 04:44:02.06ID:???0234nobodyさん
2012/01/05(木) 04:50:42.28ID:???HipHopはPHPの開発ツールとしての優位性が強まる、つまり「PHP最強だろ!」って話だからね
PHP憎しで完全に狂ってるけど、はたから見ると面白い
0235nobodyさん
2012/01/05(木) 08:46:23.61ID:???もういいから早く代替案を答えて。
0236nobodyさん
2012/01/05(木) 08:57:14.69ID:???C++で作ったからといって、1000ユニークアクセスに対して1000DBアクセスが発生しなくなるわけじゃあないのに、
なぜHipHopで「PHP最強だろ!」になるのですか?
0238nobodyさん
2012/01/05(木) 09:14:31.17ID:???よく死にたくならないなと感心するよ
0240nobodyさん
2012/01/05(木) 11:42:14.54ID:ACIe1UJA0241nobodyさん
2012/01/05(木) 11:48:53.94ID:???じゃなければmyTrim()とかmyPhpinfo()みたいにプレフィックスでも付けて差別化するしかない
0242nobodyさん
2012/01/05(木) 11:55:13.54ID:ACIe1UJAPHPコードからではできないですか。
諦めて別名でやってみます。
0243nobodyさん
2012/01/05(木) 12:05:52.58ID:???それはC/C++ソースをコンパイル時にアセンブラ出力して書き換えるようなもの。
無駄をなくすとすれば機械語、アセンブラにたどり着く。
しかし開発効率からそのあたりには手を出さず、PHPやC/C++のコードの範囲でできる事をした方が良い。
0244nobodyさん
2012/01/05(木) 12:15:28.46ID:???Matzも知らないから素人なんだろうと思ってたけど納得だわ>>218
facebook級のサイトのを運営してるSEというなりきり設定がワロタ
PHPの高速化に HipHop vs APC てのがあるみたいだけど
現時点でほとんど性能は変わらないようだし安定性の面でAPCに軍配が上がるのかな。
サクッと作って高速で動かすという技術はPHPが先を行ってる感じ
http://blog.candycane.jp/archives/491
http://dsas.blog.klab.org/archives/51978647.html
0245nobodyさん
2012/01/05(木) 12:28:51.85ID:???どれだけPHPが高速化できたとしても、リソースの少なさ、速度の速さではネイティブ実行形式が上だろ。
0246nobodyさん
2012/01/05(木) 12:43:16.59ID:WqkweKyi0247nobodyさん
2012/01/05(木) 12:50:18.95ID:???0248nobodyさん
2012/01/05(木) 12:52:26.30ID:???0249nobodyさん
2012/01/05(木) 12:57:19.29ID:???シングルトン・マルチスレッド・アプリケーションスコープ、全部理解してないからな
0250nobodyさん
2012/01/05(木) 13:02:42.94ID:???精神病むには最適な職種と言える
0251nobodyさん
2012/01/05(木) 14:48:43.61ID:r8xFdMd/$ary[expr1 ? expr2 : expr3]ってしたとき
expr3の結果を$ary[]にする方法ってないよね
ちなみにnullや''は空文字列で[]とは違う
0252nobodyさん
2012/01/05(木) 14:56:30.73ID:FPSYlk7pclass SQLというのがありまして
function getRecord($limit = NULL, $offset = 0) {
if ($limit) return array_slice($this->record, $offset, $limit);
else return $this->record;
}
というファンクションがあったんですが、
$this->record;のrecordが何を指しているかがわかりません。
recordてもともとPHPに用意されているファンクションなんでしょうか?
0253nobodyさん
2012/01/05(木) 14:57:37.19ID:???0254nobodyさん
2012/01/05(木) 14:58:56.94ID:???0255nobodyさん
2012/01/05(木) 15:09:18.10ID:???0256nobodyさん
2012/01/05(木) 15:09:19.83ID:???0257nobodyさん
2012/01/05(木) 15:20:05.60ID:???0258nobodyさん
2012/01/05(木) 15:22:06.79ID:FPSYlk7pclass SQLの中にrecordというファンクションがなかったので
もともと用意されている何かだとおもったのですが
ググってもでてこなかったので聞いてみました。
まだよくわかっていないのでちょっとクラスについて調べてきます
0259nobodyさん
2012/01/05(木) 15:25:35.51ID:yQXwn+vlDB操作しやすいライブラリとかでおすすめないかな?
プログラム自体は大したことないのに、
テーブルやらカラムやらを大量に作らなきゃいけない予定なんで、
SQLで書くのめんどくさいから、
ソースコードだけで片付くものを探してるとこなんだけど
0260nobodyさん
2012/01/05(木) 15:26:13.26ID:???$this->recordが必ずしもファンクションとは限らないのにファンクションと決めつけてるだろ
そんなことだといつまでも謎のままだぞ
>if ($limit) return array_slice($this->record, $offset, $limit);
これ見たらあー配列なんだなってわかるし
つーことは、名前からしても$this->recordにはどこかでSELECTの結果かなにかを配列としてセットしてるメンバだとわかるだろう
0262252
2012/01/05(木) 15:29:33.28ID:FPSYlk7pprivate $count = 0;
private $host = "localhost";
private $error = null;
protected $link = null;
protected $record = null;
function connect() {
$this->link = mysql_connect($this->host, "???", "?????");
if (!$this->link) return false;
if (!mysql_select_db('recnomi', $this->link)) return false;
return true;
}
function disconnect() {
mysql_close($this->link);
}
function getRecord($limit = NULL, $offset = 0) {
if ($limit) return array_slice($this->record, $offset, $limit);
else return $this->record;
}
0263nobodyさん
2012/01/05(木) 15:30:55.18ID:???そーゆーことならフレームワークのスレへ
ただSQL書かないで最適なクエリを発行することはまず無理だと思う
DB抽象化ライブラリがインデックスまで把握して最適なクエリを発行してくれるものがあればオレも欲しい
0264252
2012/01/05(木) 15:31:28.29ID:FPSYlk7p5行目のprotected $record = null
で定義しているからしたで使えているということなんですか?;
0267252
2012/01/05(木) 15:35:46.96ID:FPSYlk7p$this->recordでrecordに$がついてなかったので
ファンクションだと思ってました。。
勉強してきます
0269nobodyさん
2012/01/05(木) 15:38:38.34ID:???使う機能だけを関数化すればよい。
SQLはコマンドラインでも動作する。難しければそこからやってみてそのあとPHPにするというのもある。
0271252
2012/01/05(木) 15:45:28.44ID:FPSYlk7p5行目のprotected $record = nullでは配列が入っていないとおもうんですが
recordには配列はどうやって入れているのでしょうか?
0272nobodyさん
2012/01/05(木) 15:50:04.64ID:???0273262
2012/01/05(木) 15:51:51.85ID:FPSYlk7p0274nobodyさん
2012/01/05(木) 16:09:56.66ID:???$recordという変数を探して、
名無しの変数なんてねえよ。とわめいたり、
素知らぬ顔で空データ返してくれるPHPを見てると
ちょっと萌えるよね。
こんな技法滅多に使わないけど。
0275nobodyさん
2012/01/05(木) 16:19:40.25ID:???/hoge/fugaというアクセスはclass hogeのfugaメソッドを実行とかね
どんな名前でアクセスしてくるかわからないものを一箇所で処理しようと思ったら便利でしょ
0276nobodyさん
2012/01/05(木) 16:26:11.82ID:???>if ($limit) return array_slice($this->record, $offset, $limit);
クエリ発行時点でoffsetとlimitつけとけよ…
これごっそりレコード取って後から切り出してるだろ
とりあえずこんなクソコード捨てちまえ
0278nobodyさん
2012/01/05(木) 19:29:38.66ID:m/6w1Ethそこでクエリごとに分けて別々に発行すればOKでした。
phpMyAdminでは;で区切ったクエリを実行できるのですが、
これはphpMyAdmin側で複数のクエリに分割して実行しているのでしょうか?
それともこちらのプログラムミスでしょうか?
0279nobodyさん
2012/01/05(木) 19:31:31.15ID:???0280nobodyさん
2012/01/05(木) 19:40:52.08ID:???今どきただのmysql使うなんて時代後れすぎですね
mysqliを積極的に使いなさい
そして○○_query系でsqlを実行するのは今すぐやめましょう
これからは○○_prepareを使いましょう
queryでsql実行してたら業務でやってる人たちに笑われますよ
0281nobodyさん
2012/01/05(木) 19:43:07.94ID:???http://www.php.net/manual/ja/function.mysql-query.php
mysql_query() は、 ひとつのクエリを送信します (複数クエリの送信はサポートしません)。
0282nobodyさん
2012/01/05(木) 19:45:35.06ID:???適当にいうな
>>280
ありがとうございます
>>281
クエリのパースってmysql側でやるものだと思ってたのですが
そういうものなのですか
ありがとうございました
0283nobodyさん
2012/01/05(木) 19:46:47.22ID:???mysqliのmulti_queryはマルチクエリ実行できるよ
ただ得意気に
>そして○○_query系でsqlを実行するのは今すぐやめましょう
>これからは○○_prepareを使いましょう
とか言ってると笑われるから注意な
すべてケースによるから自分で最適なコーディングを探すこと
エスケープやアプリに合わせたサニタイズも考えながらやって
0284nobodyさん
2012/01/05(木) 19:47:41.25ID:???Sqlite2の古い関数使うからダメなんだ。
0286nobodyさん
2012/01/05(木) 19:53:46.88ID:???ボトルネックでないだったら直に送信した方がソースは短くて済む。
決定的な差になるのはトランザクション指定。
0287nobodyさん
2012/01/05(木) 19:54:50.31ID:???0288nobodyさん
2012/01/05(木) 19:55:28.06ID:???バカだwwwwwwwwwwww
prepare使うのは速度のためじゃねえよwwwwwwwwwwwww
0289nobodyさん
2012/01/05(木) 19:58:19.19ID:???そもそもprepareは速く実行するためのものじゃねーし
エスケープを機械的にほぼ保証してくれるから使えるところでは極力使うべき
おまえ>>269,>>284だろ
ずっと明後日の方向見ながらレスしてるぞ
知ったかぶりにも程があるぞ
0290nobodyさん
2012/01/05(木) 21:07:49.16ID:m/6w1Eth二種類のモードのうちMYSQLI_USE_RESULT
というのが、従来のmysqによる結果セットと同じなのかなと思うのですが
http://php.net/manual/ja/mysqli.use-result.php
クライアント側で 大量の処理を行う際は、mysqli_use_result() を 使用すべきではありません。
なぜなら、この関数はサーバとの接続を保持 し続け、取得しているデータに関連するテーブルについて、
他のスレッドから 更新ができなくなるからです。
と書いてありました。
これは接続が保持されている間はテーブルがロックされるということでしょうか?
結果セットはテーブルとは別の領域に作成されるのだから奇妙な処理に思えますが
どういうことなのでしょう
今までのmysql関数でも、接続が保持されている間はテーブルがロックされていたのでしょうか?
0291nobodyさん
2012/01/05(木) 21:17:34.84ID:???これ
>バッファに取得しないで結果オブジェクトを返します。 エラー時には FALSE を返します。
バッファに取得しないってことはなんらかの方法で現状をキープする必要があるでしょ
テーブルロックしてるかどうかしらんけど、してる可能性は高いよ
だからバッファリングしてから使うべき(このメソッドはあまり使うべきではない)ってことになるんじゃね
0292nobodyさん
2012/01/05(木) 21:19:13.82ID:???0293nobodyさん
2012/01/05(木) 21:29:46.87ID:???ちなみに
>二種類のモードのうちMYSQLI_USE_RESULT
>というのが、従来のmysqによる結果セットと同じなのかなと思うのですが
こういう変な固定概念的なものは取り払って素直にゼロから学習しなさいな
じゃないと自分の思うようにいかないことばかりでイライラすることになるよ
一応mysqliでSELECTを投げる場合の標準的な手順だけ
1. プリペアドステートメントセット
2. クエリ実行
3. 結果オブジェクト取得
4. オブジェクトから結果(レコード)取得
概ねこんな感じ
0294nobodyさん
2012/01/05(木) 21:32:31.52ID:???データ取得している間中ロックするとか
なんかありえない処理に思えるのですが・・・
同時に一人しか同一テーブルを読めないってことでしょう
いやありえない
mysqliがおかしいのか
今までも実はそうだったのか・・・
0295nobodyさん
2012/01/05(木) 21:35:54.28ID:???>>293読んでね
で、他にメソッド色々あるでしょ?マニュアル熟読してみてよ
しかも読めないとは書いてないじゃん、更新できないとは書いてあるけど
イロイロと勝手にわかったフリするのは学習の妨げになるよ
0296nobodyさん
2012/01/05(木) 21:43:24.56ID:???プリペアドステートメントを使う以外は従来と同じですね
あまり気にせず、
データが巨大な場合はmysqli_store_result
そうでない場合はmysqli_use_result
を使っておけばいいのかなぁ
0297nobodyさん
2012/01/05(木) 21:52:18.06ID:???バッファリングせずにデータを読みたい場合とバッファリングしてからデータを扱いたい場合で変わってくるでしょう
前者はクエリを投げた時の状態を固定したままにしておきたいような場合に使えるでしょう
後者は別にデータ取得直後に変更が加えられても問題ない場合に使える
通常どちらを使えば良いかは考えなくてもわかるよね
>データが巨大な場合はmysqli_store_result
>そうでない場合はmysqli_use_result
どうしてこういう考えに至ったのかオレにはわからんけど、マニュアルの読解力もしくは理解できるまで辛抱強く読む努力が必要だと思うよ
なんとなくわかった気になるのが一番マズイ
0298nobodyさん
2012/01/05(木) 22:42:32.96ID:???何でもかんでも使えばいいってもんでもないけど。
0299nobodyさん
2012/01/05(木) 22:48:03.29ID:???おまえわかりやすくていいけどいい加減うぜーよ
しかもおまえ上で暴れてたニートのおっさんじゃん
0302nobodyさん
2012/01/05(木) 23:00:39.07ID:???0303nobodyさん
2012/01/05(木) 23:10:21.50ID:???そういう意味ではおっさんの方が釣られる魚(>>289とか)より賢い。
0307nobodyさん
2012/01/05(木) 23:21:33.78ID:???0308nobodyさん
2012/01/05(木) 23:22:45.03ID:???常人だったら死にたくなるレベルの赤っ恥でも、それに気付く能力が無いので無敵とも言える
0309nobodyさん
2012/01/05(木) 23:25:35.71ID:???自分でdbクラス書く時はもともとそういう風に書くし、
mysqliって言うほど良くなくね
明確なメリットが見えてこない
0310nobodyさん
2012/01/05(木) 23:26:02.65ID:YvCiXMC90311nobodyさん
2012/01/05(木) 23:28:08.68ID:YvCiXMC90313nobodyさん
2012/01/05(木) 23:37:21.48ID:???注意:
データのサイズがパケットサイズの最大値(max_allowed_packet)を こえた場合、types に b を 指定して
mysqli_stmt_send_long_data() を使用し、 データをパケットに分割して送信する必要があります。
とか。
これ便利になってなくね
変な制限があちこちに加わってるんだけど。
本当にいいものなのかこれは?
0314nobodyさん
2012/01/05(木) 23:44:12.21ID:???「同じプロセスの中でほぼ同じクエリを何度も発行する場合」だけでしょ?
そんな処理がほとんどないと思う
0315nobodyさん
2012/01/05(木) 23:45:29.12ID:???だからRubyやPythonにPHPはなめられるんだってwwwwwwwwwwwwwwwwwwwww
まあ止めはしねえよwwwwwwwwwwwwwwww
恥かくのはおめえらだからしらねwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0319nobodyさん
2012/01/06(金) 00:33:30.11ID:???0320nobodyさん
2012/01/06(金) 00:34:16.78ID:???それはない
0321nobodyさん
2012/01/06(金) 01:17:56.10ID:egPD7RrRコネクションプーリングはどうやればいいのですか?
0322nobodyさん
2012/01/06(金) 01:19:48.56ID:???0323nobodyさん
2012/01/06(金) 10:58:36.82ID:9fGZTwoM掲示板くらいならつくれるようになったんですが、もっと腕を上げたいです。
なにかいい勉強法はありませんか?
書店に並んでいるのはどれも入門書ばかりで物足りないです。
コードリーディングというのがいいらしいですが、おすすめはありますか?
0325nobodyさん
2012/01/06(金) 11:20:45.87ID:???使った方が簡単で生産性がいいなら使っても良い。
アセンブラよりC/C++を使うようなものだ。
0326nobodyさん
2012/01/06(金) 11:23:14.96ID:???それくらい慣れたと思ってる人を対象にした本って、
セキュリティメインに書いてる本くらい。
勿論読んでおくべきだけど、
他人のコードを解析するのが一番の勉強になる。
ZendFramework なんかは他のフレームワークと違って分解されることを前提としてるし、OOPな構造なんで、
解析もしやすいし、勉強にもなる。
ちいたんみたいな小さいフレームワークを解析するってのも、解析しやすいし、ためになる技法が結構集まる。
0328326
2012/01/06(金) 11:45:07.14ID:???いままで作った関数とかから、応用性があるものを探し出して、
さらに実用的になるように修正して、プロジェクトに追加する。
ちょこっとそれで簡単なシステムを作って、
命名規則やディレクトリ位置などを確定させる。
フレームワークちっくの設定を定義するファイルも作って、細かい設定を変更できるようにする。
で、これとそれとあれを丸まんまコピーして、設定少し合わせれば、
別のサーバーで1からシステム作るのが楽になるぞ。
みたいなプロジェクトを作るのが目標。
0329nobodyさん
2012/01/06(金) 11:54:44.26ID:DYaNhYpb$queue = new QUE;
$queue->push(1,2,3);
$x = $queue->pop();
print_r($x);
print_r($queue); ←ここで{2,3}を表示させたい。
class QUE {
protected $queue = array();
function pop() { return array_shift ( $this->queue ); }
function push($x) { array_push( $this->queue , $x); }
}
0331nobodyさん
2012/01/06(金) 12:00:33.66ID:9fGZTwoMゆるゆるなCodeIgniterでならつくれます。
他のフレームワークも勉強してみます。
>>326
入門書かフレームワークの解説書かセキュリティの本という感じで
入門書クリアしたレベルの人の為の本が全くと言っていいほどないですよねorz
ちいたんなんて初めて知りました! これを読んで勉強してみようと思います。
>>328
なるほど。フレームワーク自作って面白そうですね。
やってみます。
ありがとうございます!
■ このスレッドは過去ログ倉庫に格納されています