のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,682,991人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ【PHP】フレームワーク CakePHP 3ホール目【本命】

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
201 : nobodyさん - 2008/03/19(水) 01:30:55 ID:??? (+27,+29,-20)
>>199
オブジェクトで呼んだ方がオーバーライドもできるし
後から制御するのが楽
202 : nobodyさん - 2008/03/19(水) 01:36:20 ID:??? (+31,+29,-67)
柔軟な制御をするためにデータはオブジェクト経由で呼ぶべき
オブジェクトで呼ぶことに意味がある
それは、オブジェクトにはいってるデータを
外から制御できるからだ
203 : nobodyさん - 2008/03/19(水) 07:53:45 ID:??? (+32,+29,-23)
>>201
>>202

cakephp やってて

「意味あるのかな・・・」と思ってましたけど、やっぱり意味があったんですね。

勉強になります。ありがとうございます。
204 : nobodyさん - 2008/03/19(水) 12:54:14 ID:??? (-27,-30,-172)
例えばCakePHPでブログシステムを作るとして、
ユーザ(usersテーブル)、投稿(commentsテーブル)が一対多の
関係にある時、あるviewで、
 ユーザ1
  コメント1-1
  コメント1-2
  コメント1-3
 ユーザ2
  コメント2-1
  コメント2-2
  コメント2-3
   ・
   ・

という表示をさせたいのですが、view、controllerをどう書いてよいか悩んでいます。
modelで、hasManyリレーションを貼るところ迄は合っていますか?

どこか、参考になるページがあれば教えて下さい。
206 : nobodyさん - 2008/03/19(水) 21:42:10 ID:??? (+14,+23,-83)
表示するユーザ数+1のクエリが発行されるからアクセス数の多い中規模~大規模なサービスでは使えない。
この辺言及する人が少ないのはcakeユーザのレベルが低いからだろうか。
207 : nobodyさん - 2008/03/19(水) 22:11:32 ID:??? (+24,+28,-54)
> 表示するユーザ数+1のクエリが発行されるから
何を言っているんだ?

自分のレベルが低いと告白しているのか?
208 : nobodyさん - 2008/03/19(水) 22:21:01 ID:??? (-22,-22,-34)
>>206
だって、表示するユーザ数+1のクエリが発行されないから。
誰も指摘しないのは当たり前。
210 : nobodyさん - 2008/03/19(水) 23:13:10 ID:??? (-24,-30,-76)
>>207
>>208
お前らのcakeはこの時どういったクエリが発行されんの?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1) ...
select ... from comments where user_id in (3) ...
select ... from comments where user_id in (5) ...
211 : nobodyさん - 2008/03/19(水) 23:28:29 ID:??? (-27,-30,-217)
http://72.14.235.104/search?q=cache:frA0R04esqgJ:ameblo.jp/lamp777/entry-10072229261.html+cakephp+%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+left+join&hl=ja&ct=clnk&cd=10&gl=jp

そして、この findAll() で実行された SQL は以下の通り。

SELECT `Job`.`id`, `Job`.`com_id`, `Job`.`name`
FROM `jobs` AS `Job` LEFT JOIN `coms` AS `Com` ON `Job`.`com_id` = `Com`.`id`
WHERE 1 = 1 ORDER BY `Job`.`id` ASC LIMIT 10;

214 : nobodyさん - 2008/03/20(木) 00:28:36 ID:??? (+27,+29,-60)
子はJOINできないじゃん。
結局「表示するユーザ数+1のクエリが発行される」が間違ってることは示せないんでしょ。
実際やってみてクエリログ見ればすぐ分かるはずなんだが。
215 : nobodyさん - 2008/03/20(木) 00:37:04 ID:??? (+30,+29,-13)
>>210
素人乙!
観点がずれてるよPHPの基礎からやりなおしてね
216 : nobodyさん - 2008/03/20(木) 00:40:19 ID:??? (+32,+29,-94)
1回のクエリで全てが補えることに超したことはない
その代わり複雑なSQL文を書かないといけないから
CakePHPの負荷よりも生産性というスタイルに合わないがな
ループの中でクエリをぐるぐる発行しまくると負荷が高くなる
217 : nobodyさん - 2008/03/20(木) 00:43:11 ID:??? (+35,+30,-93)
>>215
結局こういうのが出てくるのか・・・
ほんとバカばっかだなー

それじゃ論点がどうずれてるか説明もらってもいい?
210での発言にphpの基礎は全く関係ないから、それのほうが論点ずれてると思うのだが。
んで、実際お前のcakeではこの処理でどういうクエリが発行されんの?
218 : nobodyさん - 2008/03/20(木) 00:47:43 ID:??? (+21,+29,-10)
>>209
よほどのことがない限り
ループの中にループは入れない方がいいよ
負荷がかかるからね。
219 : nobodyさん - 2008/03/20(木) 00:52:19 ID:??? (+25,+29,-55)
CakePHPのおかげで
とてつもなく負荷の高いシステムがたくさん世に出そうだな
こりゃサーバー会社が儲かるな
sakuraインターネット株でも買うか!
220 : nobodyさん - 2008/03/20(木) 05:31:17 ID:??? (-26,-29,-67)
1.2のpaginate機能はつかえねーな
柔軟な制御ができん、
ページリンクに検索項目のパラメーター付加できない、というか
できるけど、面倒なことしないとダメくさい
ソート項目のパラメータは標準で付加できるようだが
221 : 209 - 2008/03/20(木) 10:56:59 ID:mwRuCB98 (+34,+29,-141)
>>218

私の技術力だと、二重ループ以外に実現する方法が思いつかないのですが、
他によい方法があったら教えてもらえますか?

ユーザ毎のコメントを表示する機能はパスするにしても、
同様にmasManyリレーションのテーブルを親子両方とも表示したい
機会はあると思うので。


負荷という意味では、masManyの定義でlimit=>10とする事で大量の子を
取得しないように、というのは心がけています。
222 : nobodyさん - 2008/03/20(木) 11:48:27 ID:??? (-24,-25,-14)
>>219
もっと負荷の高いsymfonyもありますぜw
223 : nobodyさん - 2008/03/20(木) 12:36:12 ID:??? (+27,+29,-28)
というか、プライマリーキーで
データを取得することが
負荷が高いと思っているのかな?

JOINの方がよっぽど負荷高いですぜ。
224 : nobodyさん - 2008/03/20(木) 12:40:34 ID:??? (+22,+29,-14)
DB周りじゃないだろ多分
225 : nobodyさん - 2008/03/20(木) 12:58:50 ID:??? (-27,-30,-78)
>>210
> お前らのcakeはこの時どういったクエリが発行されんの?

こういうクエリが発行されますがなにか?

select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1, 3, 5 ) ...
226 : nobodyさん - 2008/03/20(木) 13:35:31 ID:??? (+33,+29,-24)
CakePHPのどんどん負荷をかけて生産性を上げなさいというスタイルが
自分の性格に合わない気がしてきた
227 : nobodyさん - 2008/03/20(木) 13:39:58 ID:??? (+33,+29,-53)
まだ、例のアンチが常駐しているのかw

CakePHPはメモリも食わないし、負荷も高くない。
生産性は高い。
228 : nobodyさん - 2008/03/20(木) 13:40:43 ID:??? (-29,-29,-156)
アンケート

1.ページ送りの絞り込み条件パラメータをセッションで持たせている
2.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.1 paginate)
3.ページ送りの絞り込み条件パラメータをURLの後ろに繋げてる(CakePHP1.2 pagination)
230 : nobodyさん - 2008/03/20(木) 13:45:45 ID:??? (+37,+29,-29)
>>227
矛盾してるな。それらは反比例の関係にあるからな
231 : nobodyさん - 2008/03/20(木) 13:45:54 ID:??? (+37,+29,-104)
>>226
たしかに、
●自分の用途に合わせて、全てのコードとHTMLを一から作成したシステム
●作り込み部分は最小限にして、大半のコードはcakePHP任せにしたシステム
を比べると、負荷は、一から作成したシステムの方が、余分なものがない分、
軽くできるかもね。

まあそこはトレードオフの部分だから、自分に向いてないと思ったら、
cakePHP以外のやり方を模索すればいいと思うよ。
232 : nobodyさん - 2008/03/20(木) 13:47:58 ID:??? (+32,+29,-14)
>>230
よくわからんが、いまどき生産性の悪いほうを
選びたいのか?
233 : nobodyさん - 2008/03/20(木) 13:49:21 ID:??? (+32,+29,-17)
負荷が高いシステムを作っているところは
どこでもフレームワークを使っている。
236 : nobodyさん - 2008/03/20(木) 13:55:53 ID:??? (+32,+29,-61)
>>233
どちらかと言うと、「負荷が高いシステム」と言うより、
「大規模なシステム」はフレームワークを使ってるという感じじゃない?

そうしないと、コーディングや保守が大変だもんなあ。
237 : nobodyさん - 2008/03/20(木) 14:03:35 ID:??? (+27,+29,-59)
結局は、昔からある速度重視でアセンブラ(生PHP)で書くか、
生産性重視で高級言語(フレームワーク)で書くかの話でしかないな
238 : nobodyさん - 2008/03/20(木) 14:07:42 ID:??? (-26,-29,-74)
小規模フレームワークはCIが一番だと思うんだよね
CakePHPは小規模フレームワークのクセにsymfonyと同レベルくらい負荷かかりすぎ
239 : nobodyさん - 2008/03/20(木) 14:12:16 ID:??? (+25,+29,-9)
>>238
宿題。

それをデータで示してください。

つーか、何をもって小規模といっているのかわからん。
240 : nobodyさん - 2008/03/20(木) 14:15:07 ID:??? (+27,+29,-8)
機能が少ないほうが早い。 機能と速度どっちをとるかだ。
241 : nobodyさん - 2008/03/20(木) 14:15:17 ID:??? (-29,-29,-61)
>>239
10万stepまで 小規模
データは「CakePHP CodeIgniter ベンチマーク」でググれ
243 : nobodyさん - 2008/03/20(木) 14:20:54 ID:??? (+38,+29,+0)
だめだな。CodeIgniter は小規模でしか使えない。
一番重要なモデルが貧弱すぎる。中規模以上ならCakePHPだな。
http://blogs.atanaka.biz/tanaka/index.php?itemid=691

・フレームワークにありがちな、あまり使わない機能が削がれている
・フレームワークにありがちな、よく使う機能もけっこう削がれている。
・だから、ステップ数が他のPHPフレームワークと比べて格段に少ない。
・だから、実行速度が速い。(ベンチマークはこちら)
・フレームワーク自体が複雑なことをしようとしていないので、潜在バグの深刻さも小さい。(たぶん)
・マニュアルがかなり読みやすく、取っつきやすい。
・cakePHPには名前のインパクトには負ける。
・ZendFramework には格式の高さで負ける。
・MVCというよりは、VCだ。モデルはあくまでもおまけ的。
・PHPがそもそもテンプレート的なんだからテンプレートエンジンいらない、と考えているふしあり。(だから速い、と)
・でも、簡単な変数置き換えの簡易テンプレートはデフォルトでついてるし、Smartyとの連携もできる。
245 : nobodyさん - 2008/03/20(木) 14:25:59 ID:??? (+38,+29,-86)
>>243
モデルはCIベースでオレオレ的に拡張した方がいい。
CakePHPの既存モデルにしっくり来ないから
まずコードが凄く見難い状態になる
結局バリデートにYAML使ったりと拡張しないいけない
247 : nobodyさん - 2008/03/20(木) 14:29:19 ID:??? (-28,-26,-1)
小規模 CI
中規模 CI
大規模 ここまできたらCIでいいや
248 : nobodyさん - 2008/03/20(木) 14:31:12 ID:??? (+24,+26,-28)
CIのサクサク感を味わうと他のFWは使えない
249 : nobodyさん - 2008/03/20(木) 14:36:26 ID:??? (+2,+16,+0)
>>225
それバージョンいくつ?
250 : nobodyさん - 2008/03/20(木) 14:36:52 ID:??? (-27,-30,-118)
viewの先頭でoptions()を使って追加文字列をセットしておけば、prev()やsort()等で追加の指定する必要なくなる
$paginator->options(array('url'=>'hogehoge'))

controllerでpaginate(モデル)した後のoptionsにセットしてもurlに展開される
$this->params['paging'][モデル]['options']['hogeoge_key']='hogeoge_value'
*この方法は裏技的な気がするけど、、、
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について