トップページphp
983コメント361KB

Zend Framework Part5

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/02/11(金) 04:04:29ID:???
公式
http://framework.zend.com/

マニュアル
http://framework.zend.com/manual/ja/

翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)

バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa

API
http://framework.zend.com/apidoc/core/

前のスレッド  Zend Framework Part4
http://hibari.2ch.net/test/read.cgi/php/1265721684/
0176nobodyさん2011/05/26(木) 22:45:24.84ID:???
>>164
ZF徹底マスターに載ってたサンプルだと
フロントコントローラのpreDispatchに登録したプラグインの中で
飛び先のモジュール・コントローラ・アクションの組み合わせから
アクセスに必要な権限をテーブルから引いて
セッションに保存してあるユーザーの権限と照合する。
権限不足なら、$req->setControllerName('auth'); 
$req->setControllerName('login'); という感じで
ログインの機能を持ったコントローラ・アクションに飛ばす。
権限があれば何もせずにスルー、ってことをやってる。

ログイン認証をするアクションは、
認証が取れたら↑のプラグインで使う情報をセッションに登録して
適当なページにリダイレクトする。
01771642011/05/26(木) 22:48:13.48ID:???
>>175
どうもです

>>171で書いた方法でプラグイン化して試してみます
質問したおかげで自分のやりたいことを整理できたり、考えの甘い点が見つかったので
すごく良かったです。皆さんありがとう
01781642011/05/26(木) 22:51:16.27ID:???
>>176
あ、それちょうど見てたところでした
やっぱりプラグイン化してフロントコントローラで処理するのが王道ぽいですね!
この本良いですよね
setControllerNameとかの利用法をおさらいできて良かったです
どうもありがとう
0179nobodyさん2011/05/27(金) 10:24:02.48ID:???
fileconicってZFなんだな。
表に出ない事例は山ほどありそう。
0180nobodyさん2011/05/27(金) 10:24:22.42ID:???
filesonicだった
0181 忍法帖【Lv=19,xxxPT】 2011/05/27(金) 13:48:15.12ID:???
Zend Framework in Action に書いてなかったっけ?
0182nobodyさん2011/05/27(金) 15:44:49.37ID:???
「タイプミスですか?」
これすごいな
0183nobodyさん2011/06/02(木) 20:52:01.30ID:???
Zend OpenIDってAX対応してないの?
0184nobodyさん2011/06/12(日) 16:56:38.96ID:???
Zend Frameworkを基礎から覚えようと思ってネットでチュートリアルとか
探したけど、わかりやすいのはありませんでした。

日本語だと、codezineとかIBMとかに少しあるくらい。
でも内容が古かったりするのが多くていまいち。

日本語の情報はすくないし古いのか、と思い、Zend本家の
Tutorialを見るも、コード解説が不十分でよくわかりませんでした。

C#, SQL, ASP.netなどの経験はあったので、ZendFrameworkもすぐ
覚えられるだろうと思っていたら、チュートリアルでつまづきましたw

Zend Frameworkのよく使う機能を中心に、丁寧に解説して
いるサイトとかありますか?
0185nobodyさん2011/06/12(日) 17:11:31.18ID:???
公式マニュアル
0186nobodyさん2011/06/12(日) 17:46:45.24ID:???
>>185
Zend本家のTutorialとかいたのが、公式マニュアル、チュートリアルのことです。

あれが一番ましということですか?
QuickStartというチュートリアルなのに、解説のないコードが
ポンポン出てきます。
0187nobodyさん2011/06/12(日) 17:48:28.93ID:???
QuickStartなんだから解説いらんだろw
0188nobodyさん2011/06/12(日) 18:17:10.24ID:???
今までどんな書籍で学習して来たのか興味深いな。

10日で覚えるゼンドフレームワークなんてのはまだ無いな。
10日で覚えるphpでも学習した気には成れると思うよ。
就職活動の為の即席学習目的かな? 実務経験無さそうだw

cでもsqlでもいいけど、ちゃんと実務的なアプリ作った実績とかのほうが評価されると思うよ。
コンサル会社狙いなら会計の勉強してbsやplを印刷したりpdfにかき出せるアプリを作ってみるとか。
軽く一通り遣る程度で住ませたいなら、情報処理とかの資格を取ったほうが評価される。本見て作れるとか全く評価外だし。
一番いいのは受験勉強やり直して東大に入り直してマーチ以下の足切りを回避することだと思うけどw
0189nobodyさん2011/06/12(日) 18:57:46.25ID:???
Zend Frameworkが人気ないのは、CakeやSymfonyに比べて
情報が少ないからかな?

>>187
いやいやいやw
これではぜんぜんクイックにスタートできないんですよ!

Zend本家のでつまづいたので、今はこれ読んでます。ちょっと古いけど。
http://www.ibm.com/developerworks/opensource/library/os-php-zend1/index.html

>>188
学生認定されてしまいましたが、いちおうSEですw
ただ、仕事はシステム管理者やってたので、業務でのコーディング経験は
ほとんどなく、プログラミングは初級レベルです。
自分専用の小さなソフトをC#.netで作るくらい。
コアにZendを使っているCMSをカスタマイズしたくて、Zendを学習し始めたという感じです。
0190nobodyさん2011/06/12(日) 18:59:52.82ID:???
>>189
クイックスタートのどこら辺が分からんの?
コードの羅列だけじゃなくて必ず文章がついてると思うけど
0191nobodyさん2011/06/13(月) 09:40:57.47ID:???
採用事例のソース読めよ。
0192nobodyさん2011/06/13(月) 10:05:56.83ID:???
下記の URL の「各種のリソース」>「チュートリアルや構築例など」見るといいかもよ

http://www.zend.co.jp/tech/index.php?%A4%BD%A4%CE%C2%BE%2FZend%20Framework%2FFAQ
0193nobodyさん2011/06/13(月) 20:20:19.80ID:???
初心者の書き込みに優しく回答・解説できない人は、
とても実務レベルのチカラがあるとは思えないよん。
0194nobodyさん2011/06/13(月) 21:18:44.04ID:???
公式リファレンスで十分。
あれ読んで解らない人は、金払ってスクール行くなり本を買うなりするレベルの人達。

実務レベルの解説を求めるなら、尚更金払えとw
0195nobodyさん2011/06/14(火) 17:37:09.39ID:???
スキル低いのにcmsの選択自体が間違ってる漢字だなw

http://hibari.2ch.net/test/read.cgi/php/1258653329/
【CMS】AD-EDIT質問スレ【国産】
http://hibari.2ch.net/test/read.cgi/php/1268062848/
フリーCMSツールについて語るスレ3
http://hibari.2ch.net/test/read.cgi/php/1280524860/
PHP+MySQlでCMSっぽいものを
http://hibari.2ch.net/test/read.cgi/php/1173785085/
CMSと他のシステムの融合のテクニック
http://hibari.2ch.net/test/read.cgi/php/1157172951/
超高機能CMS TYPO3
http://hibari.2ch.net/test/read.cgi/php/1144670311/
【簡単】Jaws【CMS】



講師と職人は同一でもないし。
親方のノウハウ欲しいならぶん殴られて教育されるのも覚悟しないと。教師に社会経験が足りないのは散々見てると思うけどねw
0196nobodyさん2011/06/14(火) 20:21:48.59ID:???
ZFがCMS?
0197nobodyさん2011/06/14(火) 22:35:10.15ID:???
ZFがどうのと言う前にPHPの経験がない悪寒
適当なPHPの解説本とZF徹底マスターでも買ってくれば?
0198nobodyさん2011/06/15(水) 01:39:12.19ID:x3E18VF9
公式リファレンスはたまに思いっきり出鱈目が書いてあるのと
和訳されてないのがあるのをどうにかしてくれれば完璧なんだが
0199nobodyさん2011/06/15(水) 06:12:14.99ID:???
ZFは初心者用のチュートリアルが充実していないと俺も思う。

初心者を叩くのではなく、初心者がZFをスムーズに使えるように
先駆者が導いてあげるのが、ZF利用者の拡大に繋がるのだが・・・

俺がもっとスキルがあれば、チュートリアルを書いて提供したい
ところだが、そこまでのスキルはないです。
0200nobodyさん2011/06/15(水) 06:38:43.09ID:???
>>198
どこ?
0201nobodyさん2011/06/15(水) 10:08:01.07ID:???
レスくれたみなさまありがとう(まとめて)

>>191
これからZFはじめようって人に、採用事例のソース読めってのは無理があるんでは。
もっと小さなところからはじめないと効率が悪いと思う。

>>192
ペンギンのサイトとかわかりやすい記事があった。ありがとう。

>>190
まず、Zend Framework Quick Startの「Create A Layout」のあたりではまりました。
http://framework.zend.com/manual/en/learning.quickstart.html
ここはリファレンスで調べながら読んだら、やっと理解できました。
けど、リファレンス調べないと理解できないチュートリアルってどうなのかな、とも思ったり。

その次の、「Create a Model and Database Table」で完全に挫折。
http://framework.zend.com/manual/en/learning.quickstart.create-model.html

ただ、もうこの時点でチュートリアルとしては不適切なドキュメントだとはっきりわかったので
他のドキュメントでZFを学ぶことにしました。
このページのコメント見ても、「このコードでは動かない」と書いてありますw
わかりにくいうえに、バグもあるチュートリアル。
0202nobodyさん2011/06/15(水) 11:30:08.86ID:???
本を買ったら?
俺は最初本で学習したおかげで、公式のチュートリアルも理解できた。
02031842011/06/15(水) 17:02:31.99ID:???
>>197 >>202
はい。
ネットのドキュメントだとなさそうなので、あきらめて本を探しました。
洋書でZFの本がたくさんあったのでAmazon.comで2冊ほどぽちってみました。

ZFと違って、CodeIgniterのサイトは、ヘルプやチュートリアルがすごく分かりやすかった。
しかもVideo Tutorialまであったよ。
http://codeigniter.com/user_guide/toc.html

トップページにも、
CodeIgniter is right for you if you need clear, thorough documentation.
と書かれていたけど、ほんとにドキュメントしっかりしてるなー、と思った。


>>199
同じ感想の人いてよかった。
いちばんZFのドキュメントでいらついたのが、コードの部分をコピペしようとしたら
行番号まで張り付けられてしまうようになっていること。
0204nobodyさん2011/06/15(水) 17:24:31.33ID:???
洋書?って事は英語がわかるんだろう?
それなら本を買わなくても海外のブログ等から情報を得られそうだけど?
0205nobodyさん2011/06/15(水) 18:05:50.97ID:???
>>204
英語圏のサイトも探しましたけど、良書に匹敵するような
コンテンツはなかったです。
ブログはピンポイント解説どまりが多かったです。

よく使う機能を、体系的に、わかりやすく解説していて、
なおかつ内容が新しい、というのは見つからなかった。

Frameworkは、CodeIgniterだのCakePHPだの好みでいろいろ宗派が
わかれるから、ネットのコンテンツも少なくなるんではないかな、と思います。

Rob Allenのサイトにあるチュートリアルは英語圏では評価が高いみたい。
これは読みました。
http://akrabat.com/zend-framework-tutorial/

彼は、Zend Framework in Actionという本も書いているんだけど、
amazonの書評はあまりよくなかった。バグがおおいとか。
0206nobodyさん2011/06/15(水) 20:29:15.04ID:???
>>201
「Create A Layout」の具体的にどこが分からんの?
俺は解説を流し読みつつ載ってるコードを書いたら最後までスムーズに実行できたから
いまいち君の言ってることがピンと来ないんだけど
0207nobodyさん2011/06/15(水) 21:03:11.09ID:???
>>198
他人を当てにしないで自分がまずやらないと、ね
昔も IRC で言ったけれど、利用企業からすこしづつ人を出して分担して作業して欲しいな。
0208nobodyさん2011/06/15(水) 21:22:47.51ID:???
>>203
公式マニュアルを改善するリーダーとして活躍してみませんか?(英語必須)
0209nobodyさん2011/06/15(水) 22:11:01.59ID:???
本に載ってる情報は最新バージョンとの差異が多々あるので、あまりオススメ出来ない。
(特にZF1.9以前のバージョンの解説書)

簡潔なリファレンスとソースコードがあるのだから、
それを読めるようになるのが一番手っ取り早い。
英語が理解できるなら尚更コードコメント読む方が早い。

IDE使えばクラスツリーやコード補完までしてくれるゆとり仕様。
(CIやCakeはIDEとの親和性悪すぎる)
0210nobodyさん2011/06/15(水) 22:49:55.58ID:???
MappaerとかAuthとかを詳しく書いてほしいですな〜
0211nobodyさん2011/06/16(木) 14:19:10.00ID:???
CodeIgniter絶賛なら、CodeIgniterの子供になればいいのに。
zendには要らない娘。
0212nobodyさん2011/06/16(木) 19:42:52.98ID:5IgfNiWj
Zend_Authについてお聞きしたいんですが、以下について解る方いらっしゃいましたらぜひ力を貸してください。

defaultとadminの2つのモジュールがあると仮定して、adminモジュールで通した認証を、defaultモジュールからも参照した いのですが、どのようにすればいいかわかりません。

1. AdminモジュールのIndexController
$db = Zend_Db::factory('Pdo_Mysql', $params);
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'tablename', 'id', 'pass', 'md5(?)');
$authAdapter->setIdentity('hoge')
      ->setCredential('hage');
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter); // ここで認証を成功させる


↓続きは「本文が長い」と出て書き込めないので分割して書きます。
0213nobodyさん2011/06/16(木) 19:44:03.04ID:5IgfNiWj
続きです。

2. AdminモジュールのHogeControllerへアクセス
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
  die('OK'); // OKが出力される
} else {
  die('NG');
}

3. defaultモジュールのIndexControllerへアクセス
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
  die('OK');
} else {
  die('NG'); // NGが出力される。ここでOKを出したい
}

Admin - IndexControllerで認証した結果を default - IndexController で活用したいです。
上記のスクリプトで言えば、最後のdefaultモジュールのIndexControllerで"OK"を出力したいのですが、どうすればいいんでしょうか?
0214nobodyさん2011/06/16(木) 19:55:04.04ID:???
>>213
モジュール間でセッションは共有出来てる?

デフォルトでは認証結果をセッションで引き回す仕組みになっているので、
セッションが違うと認証を維持出来ないよ。

参考:Zend_Auth IDの永続性
http://framework.zend.com/manual/ja/zend.auth.introduction.html
0215nobodyさん2011/06/16(木) 20:51:38.65ID:???
>>214

ご指摘いただいた通り、モジュール間でのセッションの共有ができておりませんでした。
フロントコントローラの先頭に以下の1行を追記したところ、admin・default両モジュール間でセッションが共有できるようになりました。
> session_set_cookie_params (0 , '/', 'domain.tld');

ちなみにapplication.iniに
>phpSettings.session.cookie_domain = "domain.tld"
と書いてやってみましたが、こっちはうまくいきませんでした。
application.iniの方でも動作するまでやってみたいと思いますが取り急ぎ、ご報告まで。

本当に助かりました。
ありがとうございました。
0216nobodyさん2011/06/16(木) 20:53:50.81ID:???
※追記※

このケースではサブドメインでモジュールが分かれていました。
このことを先に書いておくべきでしたね。申し訳ありませんでした。
0217zfマニア2011/06/17(金) 00:14:33.17ID:???
今日鯖落ちしてたの知ってるか
0218nobodyさん2011/06/21(火) 13:48:32.80ID:???
今週末は毎月定例の Zend Framework Bug hunt day です。
今までずっと日本からの参加者がゼロまたは1名だけ、という状態ですが、
Zend Framework について一家言ある方はぜひ参加してみてください。
0219nobodyさん2011/06/21(火) 13:49:43.22ID:???
>>218
そのurl教えてください
0220nobodyさん2011/06/21(火) 14:48:19.94ID:zTIAULI/
日本語の本で、Zend Frameworkを使ってブログを作ろう、風の本はないでしょうか?
0221nobodyさん2011/06/21(火) 16:53:01.09ID:???
全部英語ですが、
今月のアナウンスはこちら。
http://devzone.zend.com/article/15563-Announcing-Junes-Zend-Framework-Bug-Hunt-Days

参加ガイダンスはこちら
http://framework.zend.com/wiki/display/ZFDEV/Monthly+Bug+Hunt+Days

1.x 系列で未解決の課題がこちら
http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=11385&sorter/field=issuekey&sorter/order=ASC

最近は カナダの Adam Lundrigan さんが頑張ってくれています。

コミッター用IRCがこちら
#zftalk.dev

本当は木曜日から開始ですが、だいたい金曜日の深夜から日曜にかけてにぎやかになります。
0222nobodyさん2011/06/21(火) 16:59:30.88ID:???
>>221
対応に感謝する
0223nobodyさん2011/06/21(火) 23:24:50.14ID:???
>>220
ZF徹底マスターのサンプルに簡易(?)ブログがあったような
0224nobodyさん2011/06/22(水) 00:22:31.74ID:???
バージョン古そうだけど大丈夫か?
0225nobodyさん2011/06/22(水) 23:03:25.40ID:02VI6IFU
XoopsCube、WordPress等のいくつかのCMSを見てきたのですが、ファイルサイズはZendFramework単体よりも小さいです。
独自のMVC構造を作った方がいいのでしょうが、大変なのでZFを使おうと思います。
その際、ZFの要らないコンポーネントを削除しても動作に影響は無いのでしょうか?
もし出来るなら、これは削除したらダメ、これは削除して使ってるというのがあれば教えていただけませんでしょうか?
0226nobodyさん2011/06/22(水) 23:07:07.08ID:???
別にZFは全てのライブラリをアップロードする必要ないんだよ
所詮ライブラリの集合体だから
MVCに使うならView,Controllerだけでおk
モデルをデータベースで管理するならDbも必要になる
0227nobodyさん2011/06/22(水) 23:08:43.20ID:???
容量が小さいのがいいならCodeIgniterでも使えば良い
俺は両方使い分けている
0228nobodyさん2011/06/23(木) 00:19:37.74ID:???
つか今のご時世にそんなに容量に縛られないといけない案件って大変だな。
前近代的。
0229nobodyさん2011/06/23(木) 03:18:23.45ID:???
レン鯖とかvps前提の儲からない案件なんだろう。よくあることだ。
データセンタに丸ごとさば置いちゃうよって提案すると確実に逃げられるしょぼい案件w

客にしてみればzf使うので数百メガ使います月額数万円ですって言われてもナットく出来ないだろうし。容量喰わずに住む方法無いの?って言われるのがをちw
手元のpcの数百ギガのハードディスク交換で数千円しか掛かってないのになんでそんなにぼったくられるんだって言われて涙目w
0230nobodyさん2011/06/23(木) 06:16:20.67ID:???
月500円の共用サーバですら10GB使えるご時世で
ZFの容量を気にしないといけない案件ってどんなだよ
0231nobodyさん2011/06/23(木) 07:17:38.50ID:???
数百メガ・・・?
0232nobodyさん2011/06/23(木) 08:17:38.71ID:???
>>229
別に実務経験あるふりする必要ないんだから
静かに見てるだけにしときなよ
0233nobodyさん2011/06/23(木) 09:20:46.13ID:???
小さいことはいいことだ
特にWeb系は
例えハードが進化したとしてもコードを出来るだけ小さくしよう、軽くしようと努力するのは当然
アクセスがデカくなればなるほど少しでも小さくしなければ
>>228-230こそ小さな案件しかしていないことが分かる
0234nobodyさん2011/06/23(木) 09:56:28.70ID:???
いや単にスペースを無駄に使いたくないケチなだけの人かもしれない
0235nobodyさん2011/06/23(木) 10:06:11.73ID:???
一例として、Zend_Locale_Data フォルダーの中身を削ると1メガバイト以上減るよ。
いろいろ削ってみたものを下記に置いてるので、試してみて

http://ramat.ram.ne.jp/
0236nobodyさん2011/06/23(木) 10:08:56.45ID:???
ZF使うから数百メガって何の冗談だよ
何使ったらZFより遥かに100MB単位で小さくなんの?
0237nobodyさん2011/06/23(木) 10:30:46.91ID:???
日本語
0238nobodyさん2011/06/23(木) 10:44:11.36ID:???
APCの制限だろJK
0239nobodyさん2011/06/23(木) 14:58:51.33ID:???
貧乏案件で食いつないでる香具師が釣れまくりなすれw
0240nobodyさん2011/06/24(金) 01:46:15.51ID:rVNWaX5H
顧客が気にするのはレスポンスタイムだろう
容量を聞いてくる顧客とか会ったこと無いわ
0241nobodyさん2011/06/25(土) 17:15:35.10ID:???
鯖の要件説明して何の疑問も持たない客しか相手にして来なかったのかw
なぜゼンドで作ってるのかすらり買いしてなさそうだなw
0242nobodyさん2011/06/30(木) 05:04:52.52ID:AvEAooUw
ちょっと恥ずかしい質問なんですが、zend_dbのfetchRowメソッドの返り値が
意図したデータがあったかどうかどうやって判定してますか?

$rtn = $db->fetchRow($query); だとして、、

自分は今、 if(is_array($rtn)) echo "該当データあり";
って感じにis_arrayで判定しています。
こんなので良いんでしょうか?
fetchAllの時もあわせて教えてもらえると助かります。お願いします
0243nobodyさん2011/06/30(木) 09:22:50.21ID:???
俺はこうしてる

$rows = $this->fetchAll($query);
if(!is_null($rows)) echo "該当データあり";
0244nobodyさん2011/06/30(木) 21:42:39.26ID:???
fetchするのはクエリ実行後だろ?
0245nobodyさん2011/06/30(木) 21:50:28.46ID:???
えっ
0246nobodyさん2011/07/02(土) 06:30:32.96ID:zLDecbT7
Zend_mail使っています。トランスポートの設定で、
$tr = new Zend_Mail_Transport_Smtp('server@example.com');とか
$tr = new Zend_Mail_Transport_Sendmail('-fapache@example.com');って設定がありますが、
上がsmtpサーバを指定してるのはわかりますが、下がわかりません
-fapacheの部分を何に変えても送信できてるんですが、下の引数は何を指定してるんですか?
0247nobodyさん2011/07/02(土) 10:29:03.05ID:???
>>246
envelope-fromの指定
0248nobodyさん2011/07/02(土) 10:35:16.84ID:???
http://framework.zend.com/manual/ja/zend.mail.introduction.html#zend.mail.introduction.sendmail

Return Path の指定。
0249nobodyさん2011/07/02(土) 11:15:24.89ID:???
サイトを構築するときによく使うクラスってViewとControllerとDBは三種の神器だと思いますが
それ以外にあなたが使うものってなんですか?
0250nobodyさん2011/07/02(土) 11:18:45.25ID:???
自分のアプリ用のオブジェクトかな
0251nobodyさん2011/07/02(土) 14:48:07.55ID:???
>>247,248
なるほど。zend以前の知識の問題ですね。すみませんでした
0252nobodyさん2011/07/02(土) 14:50:45.29ID:???
>>249
Cache, Log
0253nobodyさん2011/07/02(土) 15:18:26.45ID:???
>>249
ZFの中でよく使うクラスという質問?
0254nobodyさん2011/07/02(土) 16:22:44.17ID:???
Zend_Exceptionかな
直接は使わないけどね
0255nobodyさん2011/07/03(日) 16:28:15.22ID:EYOQv7h8
Zend_Filter_Word_UnderscoreToSeparator
Zend_Cloud_QueueService_Adapter_ZendQueue
0256nobodyさん2011/07/03(日) 21:51:49.81ID:???
Zend_Controller
Zend_Db
Zend_Cache
Zend_Log
Zend_Mail
Zend_Http_Client

よく使う順。
CacheとHttp_Clientは再発明するのがアホらしくなるくらい良くできてる。
0257nobodyさん2011/07/04(月) 06:47:38.56ID:???
Zend_Cache使ってる人、キャッシュレコード何に保存してる?memcached?
俺はZend_ConfigとZend_Sessionもよく使うなー
0258nobodyさん2011/07/04(月) 13:20:33.29ID:???
>>257
ちっこい案件ならfile

中規模以上は memchaced, sqlite
どっち使うかは対象の頻度見てチューニング
キャンペーンとかで山ほどアクセスありそうなら
最初からmemcachedとかそんな感じ
0259nobodyさん2011/07/04(月) 15:27:37.12ID:???
>>258
なるほどね〜
申し訳ないんだけど、参考までにmemcachedを使う規模のアクセスって
どの程度か教えてくれないですか
月間何万アクセス以上みたいな基準あるのかな、もちろんサーバの性能もあるだろうけど
0260nobodyさん2011/07/04(月) 15:39:19.17ID:???
150万アクセス
0261nobodyさん2011/07/04(月) 17:27:51.77ID:???
特に基準はなくて
memcachedサーバー立てる案件なら自然にって感じ
月間アクセス数より瞬間の方が気になるかな
イベント用の登録システムなんかだと
トータルでのアクセス数はたいしたことなくても
瞬間が恐ろしいことになったりするし

あとmemcachedは結構死ぬから
ものによってはsqlite -> memcachedって階層でキャッシュしてる

あんまりやりたくないけど
関数のキャッシュするのも楽なので嬉しい
0262nobodyさん2011/07/04(月) 20:02:38.88ID:???
>>261
>基準無し

そうなんですか
階層でキャッシュするというのがよくわかりません
factoryの段階で、sqliteとmemcachedの二通りを用意して、
save();がこけたら代替の方に保存する/引き出し時はその逆の処理ってことですか?
0263nobodyさん2011/07/04(月) 20:05:55.53ID:???
YES
0264nobodyさん2011/07/04(月) 20:21:16.38ID:???
引き出し時はその逆ってどういうこと?
代替から引き出すってこと?
0265nobodyさん2011/07/04(月) 20:34:02.57ID:???
そうなのか… 二通りキャッシュ用意するとその処理自体が重くなりそうだけど、
それでもやった方が良いってくらいの高負荷環境限定の処理ってことですよね
なるほど、いろいろ考えさせられるなぁ
0266nobodyさん2011/07/04(月) 20:35:56.77ID:???
memcachedて死ぬの?
ttserver使ってるで知らんかったわ
0267nobodyさん2011/07/05(火) 12:18:25.57ID:???
2段階で入れるのは念のためよ
もしmemcachedサーバーがこけてたらsqliteから読み込むだけ

生成がやたら重たくてキャッシュの効く処理で
しかも大量のリクエストがありそうな場合
キャッシュとしちゃmemcachedが一番だけど
memcachedは落ちることもあるので
フォローにsqlite使ってるって話

生成 -> sqlite と memcached にぶっこむ ってやって
memcachedでヒットしなかったり読み込み失敗したらsqliteで
sqliteでも駄目なら生成ってだけ
特に重たくないよ
0268nobodyさん2011/07/05(火) 14:24:55.38ID:7nMaxMXk
>>267
詳しい説明をどうもありがとう

キャッシュというのを考えたことがなく作ってきたんで、今の話凄く興味深いんだけど
関数(とかメソッド、クラス)をキャッシュと、ページ全体をキャッシュの使い分けはどうしたら良いのかな?

たとえばCDの紹介ページを考えると、曲目しか書いてないページならページ全体キャッシュでいいんだと思う。
(曲目なんて変わりようがないから)
でも、「ユーザのレビュー」や「このCDに興味のある人はこちらもおすすめリスト」が同ページに配置してる
構成だとどうしたら良いんでしょうか?
ページ全体をキャッシュするのは諦めて、CDの曲目を引き出す関数と「こちらもおすすめリスト」の関数の
2つをそれぞれ個別のキャッシュ化することになるんですか?

そうして考えると、mixiみたいなSNSや今どきのCMSの構成のサービスでページ全体キャッシュなんてありえるんでしょうか
0269nobodyさん2011/07/05(火) 15:20:19.35ID:???
ページキャッシュはページ単位でリアルタイム性を必要としない
例えばヘルプだとかFAQだとかトピックスだとかそういう用途に使う

と考えると使い所はそう多く無いように見えるけど
更新頻度にズレのある箇所はAjaxで取得すれば
9割がページキャッシュって事も可能
もちろんAjaxで取得するコンテンツの方も
関数だとかアウトプットだとかの断片的なキャッシュを使っておく

実態は断片的なキャッシュを行って組み合わせたのと大差無い計算量だけど
キャッシュ出来ない部分があってもjsonだので軽量なアウトプットで済むし
内容によっては要求そのものをせずに済むかもしれない
(レビューは「レビューを表示」ボタンが押されたら取得、とかで)

とにかく考慮するのは更新頻度と要求頻度で
CDの例で言えばユーザーレビューがどの程度更新されるのか
どの程度要求されるのかに応じて
どうキャッシュすべきかは全然変わってくる

毎秒更新される情報をキャッシュするのは
ミリ秒で要求が来る場合なんだろうけど
多分俺が関われる程度の機械性能じゃほぼ無意味

キャッシュでサーバーコスト削るのは楽しいよね
0270nobodyさん2011/07/05(火) 16:25:50.47ID:???
なるほどなるほど、凄く勉強になりました!
やっぱり今はサービス全体のベストエフォートを実現するにはajaxの機能を織り込んで設計しないと全然ダメですね!
jsやphpの本も言語ごとの「こんなことが出来る」って機能の説明だけじゃなくて
「サーバコスト対策」みたいなテーマを揚げて、言語やソフトを横断した本があれば良いのになぁ
>>269さんは何か参考にした本あるんですか?

と、いま考えたらcontrollerを携帯(ガラケー)と共有する場合ajax依存の設計は難しいですね
でもそういうのを考えるのも面白いですね
0271nobodyさん2011/07/05(火) 17:34:09.84ID:???
その辺の現場のノウハウは、文筆で飯喰ってるライタにはかけないだろうな。運用経験無いし。
0272nobodyさん2011/07/05(火) 17:50:23.50ID:???
いや書籍いっぱいあるんじゃないの?
システムの設計とか運用のだったら
多分そういう本にまだ意識が向いてないから
見つけてないだけじゃないのかな
Amazonで「システム 設計」とかやるだけでぼろぼろ出るし
俺は本苦手なのでほとんどWebです

スマートフォンはまだしも
携帯はせめてコントローラー分けておいた方が良いと思う
必要な最適化はかなり違うし
0273nobodyさん2011/07/05(火) 18:01:51.56ID:???
「サーバインフラを支える技術」とか、あの辺のシリーズに良いのがあるのかなー
でも大抵DBチューニングとかサーバ構成なんですよね

>携帯はせめてコントローラー分けておいた方が良いと思う

これは、そうですね。やっぱりまとめるのは無理がある… ありがとうございました
0274nobodyさん2011/07/05(火) 20:43:25.75ID:???
http://www.oreilly.co.jp/books/9784873113616/
新品は入手しにくいかもしれないけれど、オライリーの
「ハイパフォーマンスWebサイト――高速サイトを実現する14のルール」
はかなりためになるよ。

クライアントサイドの処理最適化とか、ファイルダウンロード順序とか。
0275nobodyさん2011/07/05(火) 21:04:46.31ID:???
ずっと買おうか買うまいか悩んでる本だ、買っちまうかな
zendと全然ズレてる話題続けて申し訳ないんだけど、
こないだmixiのアルバム機能のソース見てみたら凄かったわ
ページ全体の遷移なんてしてなくて、フォームの値だけを送信して
見た目の画面遷移はhtmlのなかにdisplay:none;で隠してるテンプレートを
jqueryで読み込んでシーンを切り替えてるのね。
バリデートも全部jqueryとajaxでやってるんじゃないかと…
使えるライブラリやコンポネントの数増やして満足とか問題外。
フロント側/サーバ側なんて区切りないもの、くじけそうになったw
■ このスレッドは過去ログ倉庫に格納されています