トップページ⇒php
1001コメント251KB

【PHP】フレームワークについて語るスレ6【総合】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/02/19(月) 23:50:20ID:e8b09Hl8
前スレ
【PHP】フレームワークについて語るスレ5【総合】
http://pc10.2ch.net/test/read.cgi/php/1159579507/l50

[PHP]フレームワークについて語るスレ4[総合]
http://pc8.2ch.net/test/read.cgi/php/1151706907/
[PHP]フレームワークについて語るスレ3[総合]
http://pc8.2ch.net/test/read.cgi/php/1145971945/
[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/
0552nobodyさん2007/05/07(月) 05:15:59ID:???
>>543
その一番上のこの記事
http://www.dublish.com/articles/10.html
「そりゃ普通に考えればそうだろ」か
「そうかもしれんが使いどころがねーよ」がほとんどだな・・・
0553nobodyさん2007/05/07(月) 05:21:57ID:???
デリシャスの検索おせええええ
0554nobodyさん2007/05/07(月) 05:29:49ID:???
>>548
http://www.moskalyuk.com/blog/php-optimization-tips/1272
Use full paths in includes and requires, less time spent on resolving the OS paths.
だって。

Error suppression with @ is very slow.
これは知らなかった。
0555nobodyさん2007/05/07(月) 10:27:02ID:???
でもそんな細かいテクで節約できる時間なんて
SQLをちょっと改善するだけでその100倍くらい稼げることが多いからなぁ……

そんな重隅より他に先にやることいっぱいあるだろ、なんてサイトが多そうだ
0556nobodyさん2007/05/07(月) 12:24:29ID:???
>>547
その文だけ読んだ限りでは、includeしたファイルの中からまたincludeして・・・という階層を10以内にしろってことっぽいけど、includeで10階層になることなんてまずありえないわな。
0557nobodyさん2007/05/07(月) 20:15:10ID:???
>>555
まったくだな。
0558nobodyさん2007/05/07(月) 22:33:10ID:???
別に10階層が何かのキーになるわけじゃない。ネストすればするほど、行数の長いファイルを読み込めば読み込むほど、処理が遅く、メモリを消費する。
必要ないライブラリファイルは初めから読み込まない方がいいし、include_once()よりinclude()を使った方がいいということ。
0559nobodyさん2007/05/08(火) 01:44:44ID:???
include_once()が遅いというが
既に読み込んだファイルリストとの照合ってそんなにコストかかるか?
include()より遅いのは当然だが
本当に気にするようなことなのかと。
0560nobodyさん2007/05/08(火) 02:03:27ID:???
「〜〜より遅い」じゃなくて
「〜〜より何ms遅い」で数字で話をしないと
意味のある遅さ論争はできないと思
0561nobodyさん2007/05/08(火) 07:01:19ID:???
そういうどうでもいいところの速さにこだわる奴ほど
そもそもの設計が悪くて桁違いに遅いプログラムを
書いてるんだよなw
0562nobodyさん2007/05/08(火) 07:04:46ID:???
ベンチとろうと思ったけど、どうやってとったらいいのかな?
ループの中で大量にinclude_onceしても、一回しかinclude自体の処理をしないから、onceじゃないincludeを大量にやるより遥かに早くなっちゃうし。
かと言ってinclude_onceを1回してるだけのPHPスクリプトを何度も呼び出しても、PHPのパースにかかる時間のほうが長くてベンチにならん・・・
0563nobodyさん2007/05/08(火) 07:08:17ID:???
別名のファイルを大量に作成しておいて
全部include_once,
全部include,
で比較してみたら?
05645622007/05/08(火) 07:09:52ID:???
と思ったけど、これでいけた
<?php
$n = 1000;
for ($i = 0; $i < $n; $i++) if (!file_exists($i)) touch($i);
$s = microtime(1);
for ($i = 0; $i < $n; $i++) include_once $i;
echo microtime(1) - $s, "\n";
$s = microtime(1);
for ($i = 0; $i < $n; $i++) include $i;
echo microtime(1) - $s, "\n";

はっきり言って誤差しかない。
何回もやってるとinclude_onceの方が早いときすらある。
0565nobodyさん2007/05/08(火) 07:20:37ID:???
>>562
絶対パスと相対パスとインクルードパスから require_once するテスト書いてみると分かるよ。
require_once, require, include_once, include は大雑把に言うと

1. パスの解決
2. ハッシュテーブルを参照 (*_once のみ)
3. ファイルを読み込み
4. パスをハッシュテーブルに登録

ってことをやってるんだけど、(1) で 絶対パスならそのまま、相対パス (./ や ../ で始まる) なら
絶対パスに変換して正規化、その他なら include_path から順番にファイルを検索。
これが思ったより時間がかかっていて、しかも実行時の問題だからアクセラレータも無意味。

たとえば require_once '...'; // @resolve_path みたいにノーテーションしていたら
絶対パスに書き換えてデプロイしてくれるフレームワークとかがあると面白いかもね。
0566nobodyさん2007/05/08(火) 07:26:10ID:???
>>564
include はファイルI/Oが伴うから、ハッシュテーブルに登録されていたら
そこで終わりの include_once の方が速くても何の不思議もないよ。
そもそも require_once/include_once はクラスや関数が記述されているファイルを
読み込むとき等に使うもので、requre/include とは用途からして別物だし。
05675642007/05/08(火) 07:41:47ID:???
>>565
なるほどね。
まあとりあえず、includeとinclude_onceにパフォーマンス的な違いはほとんどないって感じでおkかな。

>>566
いや、564のコードはループ内で毎回異なる名前のファイル("0"〜"999")をinclude_onceしてるから、ファイルの読み込みも、パーサの起動も(空のファイルなので実質パースしてないけど)毎回やってるよ。
ちなみに、敢えてinclude中にパースする時間をなくすことで、includeとinclude_onceそのものの時間差をなるべく純粋に測ろうとしてみた。
この2つにパフォーマンス上の違いはないなら、566の言う通り、用途で使い分けるべきって結論になるわな。
0568nobodyさん2007/05/08(火) 07:45:09ID:???
include_path から順番にファイルを検索
の段階までパスが確定しないケースってそんなに多くはないんじゃ?
PEARだとそうなるかな
0569nobodyさん2007/05/08(火) 09:23:24ID:???
実際はファイルアクセスとパース処理が大半で登録されてるかどうかの
チェックなんてゴミだろ。バカらしいこと考えてないで、用途に合った
ほうを素直に使えばよろしい。
0570nobodyさん2007/05/08(火) 13:49:59ID:???
そんなところでミリセカンドを稼ぐよりも
コードの可読性とメンテ性を考えて作業者の数十分を稼いでくれって話だな

require_once でいいところに require 使ってたりすると
複数回読まれる可能性があるのか? とか思っちゃうよ……
0571nobodyさん2007/05/08(火) 18:31:45ID:???
デバッグしにくい変なバグの原因になりそうだよな・・・
気にしたら負けの問題だなこれは
0572nobodyさん2007/05/08(火) 21:19:24ID:???
情報弱者はしょうがねーなー。俺のやさしさを五臓六腑に染み渡らせろよ。
http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
http://t3.dotgnu.info/blog/php/inclusion-checks.html
0573nobodyさん2007/05/08(火) 22:19:22ID:???
<?php
if(defined(__FILE__)) return;

define(__FILE__, true);

ファイル頭にこれ書けてか?
そこまでしなけりゃならん程incude_onceは遅いのか??
0574nobodyさん2007/05/08(火) 22:22:21ID:???
英語長げー
日本語三行で頼む
0575nobodyさん2007/05/09(水) 10:31:35ID:???
>>572
goodjob!
0576nobodyさん2007/05/09(水) 10:59:20ID:???
自画自賛乙
0577nobodyさん2007/05/10(木) 03:11:35ID:???
バイトコードキャッシュ使えばincludeの速度なんて無くなるんだから、
そんなつまらんことに時間掛けてる奴は相当アホだな
0578nobodyさん2007/05/10(木) 03:59:31ID:???
include_once問題はキャッシュ関係ないんじゃなかったっけ?
0579nobodyさん2007/05/10(木) 08:12:27ID:???
>>578
その通り
0580nobodyさん2007/05/10(木) 08:18:30ID:???
572は要するに
*_once系はキャッシュが効かないから
普通のincludeでキャッシュを効かせようって
キャッシュ前提の話でしょ?
0581nobodyさん2007/05/10(木) 08:41:00ID:???
このスレには、
http://t3.dotgnu.info/blog/php/inclusion-checks.html
をちゃんと読める人はいないの?
0582nobodyさん2007/05/10(木) 08:50:43ID:???
Somebody set us up an Inclusion Check
こっからもう意味わかんね
誰かが私たちに挿入チェックをセットアップする?ハァ?
0583nobodyさん2007/05/10(木) 10:03:01ID:???
読める人がいないんじゃなくて、読んでも解説する人がいないだけだと思ってたら
本当に読めない人もいたのか……
0584nobodyさん2007/05/10(木) 10:12:29ID:???
かなりブロークンな英語であることは確か。
writingについて、後天学習したピジンぽい。
0585nobodyさん2007/05/10(木) 10:24:18ID:???
symfonyのWEBアプリ、フロントコントローラでのSF_ROOT_DIRを絶対パス指定にしたら、
少し早くなったよ!
ありが�d!
0586nobodyさん2007/05/10(木) 17:19:06ID:???
それよりプロファイリングして一番遅いところから改善していった方が効率良いよね?
0587nobodyさん2007/05/10(木) 22:59:47ID:???
まあそういう事だね。ボトルネックも解らないのにやみくもにチューニングするのはナンセンス。
ただボトルネックになりうる箇所を知っておく事は大事な事だと思う。
0588nobodyさん2007/05/10(木) 23:09:01ID:???
プロファイラは何を使ってる?
Xdebugって読みづらいんだよね
0589nobodyさん2007/05/11(金) 00:26:18ID:???
symfonyのORMよりCodeIgniterのORMの方が分かりやすくていいな
symfonyオワタ

      symfonyオワタ♪
      \    オオオオワターオワオオワオワタ/
         ♪\(^o^) ♪
          _  )  > _ キュッキュ♪
        /.◎。/◎。/|
  \(^o^)/.| ̄ ̄ ̄ ̄ ̄|  |  \(^o^)/  CodeIgniterハジマタ♪
    )  )  .|        |/   ノ ノ
((((  > ̄ > )))) \(^o^)/ ((( < ̄< ))))
              )  )
         (((  > ̄ > ))))
0590nobodyさん2007/05/11(金) 02:47:59ID:???
ファイルインクルードの見直しは確実に処理速度が向上するけどな。全体としてみてどの程度の割合かは別だが、早くなるのは確実。
0591nobodyさん2007/05/11(金) 10:14:49ID:???
SymfonyというかPropelがビッチ過ぎる
他は良いんだけどね・・・
0592nobodyさん2007/05/11(金) 13:16:38ID:???
乱立の流れはいつごろ収束するんですか?

なんか使う側もオナニー状態に思えるんですが。
0593nobodyさん2007/05/11(金) 15:02:52ID:xcuFf1Dy
<?php

$model=new Model;
$list=$model->getList();

include("index.tpl");

?>

これでも一応MVCだろ?
0594nobodyさん2007/05/11(金) 15:43:06ID:???
>>592
だから「ちいたん」使うんだろwww
0595nobodyさん2007/05/11(金) 18:12:14ID:???
最初にコンパイルしとけば早くなるよ。
今ではzendのコンパイラ使ってる。
0596nobodyさん2007/05/11(金) 20:24:47ID:???
>>595
無料のないの?
0597nobodyさん2007/05/11(金) 22:18:03ID:???
>>596
APCとかで十分だろ。
0598nobodyさん2007/05/12(土) 01:31:00ID:???
http://itpro.nikkeibp.co.jp/article/JIREI/20070508/270283/
ネクスト
PHPで構築した不動産情報サイトにフレームワーク導入へ

久しぶりにMapleが話題に!
0599nobodyさん2007/05/12(土) 01:38:39ID:???
>>598
しかしなんか制作クオリティ低そうなとこだね。。
0600nobodyさん2007/05/12(土) 01:50:18ID:???
>他のPHPフレームワークと比較して,構造が単純で理解しやすい
ううむ・・・
0601nobodyさん2007/05/12(土) 02:35:52ID:???
開発停止してる事を知らないんだろうか?
仕事の案件で、Mojavi使ってますってのが結構多いが、これも同じかな?
0602nobodyさん2007/05/12(土) 03:42:17ID:???
逆に考えるんだ
更新が停止しているからこそ安心して使える…
そう考えるんだ
0603nobodyさん2007/05/12(土) 04:37:51ID:???
MapleはPHP向けのそれなりにメジャーなフレームワークの中でもっとも複雑と思われる。
ネクストって会社は恐ろしく間違えまくってる。
0604nobodyさん2007/05/12(土) 07:07:14ID:???
既に火がついたシステムを立て直そうっていうくらいだから
実際技術的なレベルはそんなに高くはないだろうね・・・
Mapleは実際使ったことはないが
内部の見通しはいいのでは?
0605nobodyさん2007/05/12(土) 11:38:15ID:???
>>599
ベンチャーなんて大概そんなもん
0606nobodyさん2007/05/12(土) 14:06:51ID:???
フレームワークの開発が停止していても
自分らでメンテナンスすればなんら問題なし
0607nobodyさん2007/05/12(土) 14:20:44ID:???
もちろんそうよ
でもMojaviなんかはもう設計思想が少し古くなってると思う
0608nobodyさん2007/05/12(土) 14:28:04ID:???
どういうところ?
0609nobodyさん2007/05/12(土) 14:41:35ID:???
チェイン状に実行されてく構造とかじゃないか
よくわからんけど
0610nobodyさん2007/05/12(土) 14:54:21ID:???
Rails以前に作られたから
Railsが持ち込んだ概念がごっそり抜けてるところ。
ヘルパとかスマートなURLマッパがないし、
逆にヘルパやコントローラに溶けていったViewクラスがまだあるとか。
0611nobodyさん2007/05/12(土) 16:36:41ID:???
ウェブフレームワークというのはStrutsで完成してる。
RailsはORマッパーの組み込みとかミニサーバとかヘルパースクリプトによる省力化とか、そういう周辺部分を便利にしただけだな。
IDEないからエディタで書くけど、XMLは面倒だから、規約ベースにしちゃえとか。
0612nobodyさん2007/05/12(土) 17:47:35ID:???
そういう周辺部分の便利さが書き手にとっちゃ重要なのも事実
Strutsが構築した功績は大きいと思うけど
まだまだwebアプリFWを便利にしていく余地は腐る程あるだろう
0613nobodyさん2007/05/12(土) 19:19:41ID:???
PHPとかルビーなんかにフレームワークなんかつかっても元々大規模に向かないからそこらかしこで無理が出てくる。
でもJavaだと極端に理屈っぽくなるからベンチャー系だと敬遠されがちだしな、、
0614nobodyさん2007/05/12(土) 20:34:10ID:???
実態しらないで、どっかで聞きかじったはもういいよ。
0615nobodyさん2007/05/12(土) 21:01:00ID:???
PHPって
func(,,100)
みたいなデフォルトパラメータ指定出来ないのがうざい。
他言語パクるならそういうとこもパクれよ…
0616nobodyさん2007/05/12(土) 21:17:14ID:???
>>615
下手な釣りですね・・・
0617nobodyさん2007/05/12(土) 21:28:50ID:???
釣りじゃないよ
心の叫びだ
0618nobodyさん2007/05/13(日) 00:35:37ID:???
機能そのものが欲しいのか
単に syntax sugar が欲しいのか
書いてる本人は区別できてるんだろーか?
0619nobodyさん2007/05/13(日) 01:12:55ID:???
文法糖って何?
とにかく「引数を省略できるのは右端から連続してる箇所だけ」という
不条理きわまりない仕様が許せねーんだよ
0620nobodyさん2007/05/13(日) 01:48:34ID:???
文法糖じゃなくて糖衣構文
ググれよ
0621nobodyさん2007/05/13(日) 02:41:10ID:???
>>591
速度出したいときはBasePeer使うと全然早いよ。
adminGeneraterをフロントエンドで公開するようなアホじゃないでしょ?
0622nobodyさん2007/05/13(日) 02:44:58ID:???
>>580
>*_once系はキャッシュが効かないから
どこの情報だよwww
勝手にデマ流すなアホ
0623nobodyさん2007/05/13(日) 03:09:28ID:???
>> 598

> 機能の拡張を繰り返すうちスパゲティ化が進み,現在はある機能を改修すると
> 別の機能が正常に動作しなくなるという事態が頻発しているという。

こういうのは、改修が完了した後なら言ってもいいけど、改修前に言っちゃだめだよね。
個人情報とか扱うんだろうから、不安で使えなくなる。


0624nobodyさん2007/05/13(日) 04:13:29ID:???
>>619
>文法糖って何?
うはwwww
0625nobodyさん2007/05/13(日) 14:31:07ID:???
って言っても、syntax sugarなんてほぼ日本語英語じゃん。
syntactic sugar って書けよ。
それに「文法糖」って訳だってあたらずとも遠からずだ。
function(,,100)クレクレなんていうsugarは糞だけどな。
0626nobodyさん2007/05/13(日) 15:24:54ID:???
お互い理解できる言い回しかどうかの問題だろ
話が通じない言い回しじゃ役に立たん
0627nobodyさん2007/05/13(日) 15:36:34ID:???
>>625
英文でも普通にsyntax sugarというし通じるがまぁ主流の表現ではないな
あと「構文糖」って訳語を見たことがある。オライリーのPerl本あたりで。

syntax sugar/syntactic sugar/糖衣構文/文法糖/構文糖
どれ見ても同じひとつの概念が浮かぶなら特に問題はないと思うが
そもそもその概念自体を知らないんじゃ話が役に立つとか以前に話にならん
0628nobodyさん2007/05/13(日) 16:47:37ID:???
>>627
重要なのは概念をきちんと訳せているのが糖衣構文だってことだろ。
0629nobodyさん2007/05/13(日) 17:10:40ID:???
英語が読めない馬鹿の巣窟ですね。
0630nobodyさん2007/05/13(日) 18:59:22ID:???
素人意見なんだけど
自分の書きたいようにソースを書いてコンパイルのように実行前に正しい構文に変換して
やればいいだけの話じゃないの?
0631nobodyさん2007/05/13(日) 19:59:24ID:???
>>630
そこまでするのはさすがに面倒くさいな
新言語作っちゃう方がいいかも
言語作るのって難しいのかな?
0632nobodyさん2007/05/14(月) 00:52:40ID:???
Zendが反省すればいいだけの話だろ
0633nobodyさん2007/05/14(月) 02:52:42ID:???
もういいよ
0634nobodyさん2007/05/14(月) 09:41:13ID:???
そうだな、もういいな
0635nobodyさん2007/05/14(月) 09:45:41ID:???
>>631
「こういう構文があると便利」って思いついて実装する事自体は、大抵そんなに難しくは無いんだが、
そのうち、そういった構文に複数の解釈がある、等の矛盾が噴出したりするので難しい。
0636nobodyさん2007/05/14(月) 14:15:32ID:???
マカーなメキシカンが作ったフレームワークが登場
http://adroit.selfcontained.us/index.php
0637nobodyさん2007/05/14(月) 14:18:47ID:???
    *  オブジェクト指向
    * MVC
    * Smartyユーティリティ付属
    * Ajax簡単実装
    * PHP5+以降

ライトウェイトを歌ってるのに今時Smarty?
センスなしと判定
0638nobodyさん2007/05/14(月) 14:21:20ID:???
FW作ってるの外人ばっかりじゃん
ジャップも頑張れよ
0639nobodyさん2007/05/14(月) 17:20:36ID:PzBGoMlr
>>638
Ethnaって日本人じゃないの?
0640nobodyさん2007/05/14(月) 18:17:17ID:???
>>638
ちいたんもあるぞ
0641nobodyさん2007/05/14(月) 18:49:13ID:???
Mapleもな
0642nobodyさん2007/05/14(月) 21:47:38ID:???
他にも4つくらいはあるよ
知らないだけだろ
0643nobodyさん2007/05/14(月) 22:14:53ID:???
>>636
そのサイトにアクセスして描画されるまでの時間だけで、
既に使う気がなくなる遅さ。
0644nobodyさん2007/05/14(月) 22:50:11ID:???
みったんフレームワークもあるよ
0645nobodyさん2007/05/15(火) 01:24:20ID:???
このスレ見てるんじゃないかとおもた

PHP最適化tipsまとめサイト
ttp://labs.unoh.net/2007/05/phptips.html
0646nobodyさん2007/05/15(火) 13:02:28ID:EEPUGtmM
そこレベル低いよ。ブログが逆効果だよ。
0647nobodyさん2007/05/15(火) 13:06:22ID:???
  、  ∩  
( ゚∀゚)彡 ちいたん! ちいたん!  
  ⊂彡  
0648nobodyさん2007/05/15(火) 13:21:04ID:???
確かに右脳はレベル低い。そこら辺の馬鹿つれてきてPHP覚えさせた感じ。
0649nobodyさん2007/05/15(火) 13:42:48ID:???
>>645
なるほど。
>メソッドで2回以上参照されるすべてのグローバル/オブジェクト変数はは、
>ローカル変数に格納したほうがよい。
と紹介しているのに、自社のやつが
http://labs.unoh.net/2007/05/php_7.html
みたいなそれを正面から無視するコードかいてたりするのが笑える
0650nobodyさん2007/05/15(火) 14:03:04ID:???
なんだかんだいってこのスレのtips見て若干コードの書き方変わってきたわ
strposを良く使うようになったし
ループ中の判断分岐は外に出せないか検討するようになった
0651nobodyさん2007/05/15(火) 14:04:09ID:???
>>646
>>648
右脳のレベルはおいといて
真面目にレベルの高い奴の記事読みたいぞ
おまいらなんか書けよ
0652nobodyさん2007/05/15(火) 14:07:48ID:???
・メソッドで2回以上参照されるすべてのグローバル/オブジェクト変数はは、ローカル変数に格納したほうがよい

これから言うと
クラス内で
Context::getInstance()
するより
プロパティーに持っておいて
$this->getContext()
する方が速いってことかな?
俺はContext::getInstance()形式を好んで使ってるんだが
■ このスレッドは過去ログ倉庫に格納されています