Introduction of symfony development process & What's symfony 1.3?Kousuke Ebihara
![Symfony 1.4 TIPS from Openpne Source Code](https://cdn-ak-scissors.b.st-hatena.com/image/square/8b1301bb154f10d0a00e7c75895e7b1e3e134b92/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fopenpne-code-100903024840-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
Introduction of symfony development process & What's symfony 1.3?Kousuke Ebihara
「CakePHPを使っているとメモリ不足で落ちる」というなんだか微妙な話が挙がっているようなので休み中に検証してみました。CakePHPの1.1と1.2、それにsymfonyを対象としてORマッパーに意図的に大量データを取得させた場合のメモリの使用量を計測してみると、まぁほぼ妥当といってよい結果を得ることが出来ました。 とりあえず先に結論を。 メモリの最大使用量がphp.memory_limitに達した場合はCakePHPとsymfonyも処理が止まる 処理に必要になるメモリの量はsymfonyもcakeもほぼ同様 処理速度を厳密に比較するならば データ量によって順番は変動する メモリの使用量を厳密に比較するならば CakePHP1.1 < symfony < CakePHP1.2 symfonyのsfDebugのメモリ使用量は実際の使用量から乖離している (参考) http://www.
ごあいさつエントリだけというのもなんなので、引き続きfujimotoです。実質上1つめのような気がするこのエントリでは、PHPが3倍くらい(少なくとも2倍くらいは...)速くなるGree Fast Processorというのを先月作ってみたのでご紹介です。 すぐわかるまとめ Gree Fast Processorというのを使ってみると、シンプルなsymfonyのプロジェクト(xav.ccで試しました)でも2倍弱、結構複雑なアプリケーションだと7倍くらい速くなったりします。いくつかの制約がありますが、パフォーマンスに飢えているかたはお試しください。 こちらはなんかすごい速くなっている感じのグラフ(一番上が速くなった版のRequests per Second、赤が通常版のRequests per Second): これはさすがにbest caseすぎる気がしますが、普通にやっても2倍弱くらいは
昨日、Twitterで@massatさんが以下のようなことをつぶやかれていました。 ・🍻 on Twitter: "sfConfigHandler まわりの挙動を変えるプラグインを書きたいのだが。余地がないぞ・・・。 #symfony" ・🍻 on Twitter: "@vectorxenon config_handlers.yml に自前のymlを記述するとsfConfigCache::importでキャッシュまで作っちゃうプラグインを作ろうと思ったのですが。importの引数で渡すパターン名をConfigHandler内で取れなくて悩み中す" ・🍻 on Twitter: "app.ymlが肥大するのが嫌だから最近は自前のymlを作ってconfig_handlers.ymlに書いてsfDefineEnvironmentConfigHandlerで読んでsfConfigCache:
<?php class sfMobileView extends sfPHPView { private $mobileTypeMode = false; private $mobileView = false; private $php_tmpfile = false; protected static $log; public function initialize($context, $moduleName, $actionName, $viewName) { self::$log = sfConfig::get('sf_logging_enabled')? $context->getLogger() : false; $this->mobileTypeMode = sfConfig::get('app_sfMobileView_typemode',false); $this->mo
「えー!sfSmartyViewPlugin使っていいのは小学生(ry」と言われようが、使わざるを得ない状況なので。 sfSmartyViewPluginはsymfonyでSmartyを使うためのプラグインですが、dinoのブログで叩かれたり(?)してるように、手直ししてやらないと使い勝手が悪いです。 とりあえず、「こんな感じで使ってますよー」的なものをまとめてみました。 Smartyのdefault_modifierでescapeしたいよ まあ、sfSmartyViewPluginに限らず、Smarty使うときはいつもやってる話ですが。 Smartyのdefault_modifierでescapeを指定できると、変数出力時のエスケープ漏れがなくなるのでかなり良い感じなんですが、Smarty付属のsmarty_modifier_escapeは内部で表示する値の型判定していません。なので、d
Symfony で Smarty は 使わない方がいいです 冒頭から否定的ですいませんが、現状では Symfony で Smarty は使わない方がいいです。 逆にメンドウ。 下記は Symfony + Smarty で作り始めて、引くに引けなくなった人のバッドノウハウです。 JavaScript が素直に書けない ちょっとしたJavaScript関数だったらテンプレートに直書きしたい。 でも素直には書けない。・・・Smartyのデリミタが'{'と'}'だから。 普通は '{ldelim}' と '{rdelim}' を使うんだろうけど、JavaScriptヘルパーとの兼ね合いでもちろん使えません。 Smartyのデリミタを変更するとか、JavaScriptヘルパーいらねえ!とかやりようはいくらでもありますが、もはやテンプレートとは呼べない代物になる。 まぁ、このケースは'{
谷口です。 [Symfony] HTTP通信を強制的にHTTPS通信に変えるプラグインで、sfSSLRequirementPluginの紹介をしました。symfony 1.0で実際に設定を進めていると、httpsにリダイレクトされないケースがありました。。。 ※https通信にしたいURLは「http://mydomain.com/myApp.php/myModule/myAction/」として説明します。 apps/myApp/modules/myModule/config/security.ymlは以下のように設定しています。 myAction: require_ssl: true なぜか、http://mydomain.com/myApp.php/myModule/myAction/のままアクセスできてしまいます。 symfony cc しても、ブラウザキャッシュを消してもダ
100年続く会社を作るアイシーズのエンジニアブログPHP、Java、Ruby、Ajax、Linux… 「BtoBインターネットサービス」に取り組むエンジニアのブログSymfonyでSSL sfSslRequirementPlugin こんにちは 緑日 です。 本日はSymfonyのプラグインを紹介します。 プログラマである方は経験があると思いますが、会員登録などの個人情報を扱う際は、httpsを使用すると思います。 SSL通信ですね。 「本ページと会員ページを行き来する際、http→https https→httpを都度書いているぞ!」、というのは最近あまりないと思いますが、それでも、結構めんどくさいのではないかと思います。 Symfonyにて開発をしているとその考えが若干軽減されます。 sfSslRequirementPluginというプラグインを使用することで、http
こんにちは。カヤックモバイル$のアラガです。 諸事情により.htaccessによるIP制限ができなかったので、symfonyでIP制限するフィルタを作りました。 携帯サイトのキャリア判別は、おなじみのNet_UserAgent_Mobileを使うと簡単ですが、ユーザーエージェントだけでは簡単に偽装できてしまうので、公式サイト等の場合は望ましくないです。 そこで、各キャリアから公開されているIPでも制限をかけます。.htaccessで良ければMobile IP htaccess Makerを使うのが簡単です。 しかし、リバースプロキシを使っていると、IPが経由サーバーのIPになってしまい、元のIPがX-Forwarded-Forに入ってしまいこの方法だとうまくいきません。(ということに気づきました) そこで制限したいIPを正規表現で書いて SetEnvIf X-Forwarded-For "
There comes a time in your symfony development career when you will need to connect to multiple databases from within one application. At first it may not be obvious how to configure symfony correctly to handle a couple different databases or database servers. Let me show you just how simple it is with Propel! Keep in mind that the examples below are just a simplified overview to show the basic co
谷口です。 以前、気になるプラグインで紹介したsfPropelLoadbalancerPluginの使い方がある程度わかったのでご紹介します。 まだα版ですので動作の保証がありませんが、DBでレプリケーションをしている方には便利なプラグインです。 概要 対応環境 single master multiple slave slave選択アルゴリズム ランダム選択(マスターも対象に含めることができます。) インストール&使用方法 まだα版のためか、他のプラグインとは別のインストールが必要なようです(?) 端的に示すと以下の通りです。 ソースコードをダウンロード ダウンロードしたtgzファイルを展開し、pluginsディレクトリ以下に配置 展開したファイル内のconfig/autoload.ymlのパスを書き換え、application_root /config/autoload.ymlに
ProjectConfiguration.class.php <?php public function setup() { $this->dispatcher->connect( 'propel.filter_connection_config', array($this, 'filterConnectionConfigEvent') ); } public function filterConnectionConfigEvent($event, $arguments) { if ($slaves = $event['database']->getParameter('slaves')) { if (isset($slaves['dsn'])) { $slaves = $this->mergeConnectionParams($arguments['connection'], $slav
PHPエラー PHP自体のエラーは、symfonyのエラーとは別に捕捉されます。 っでその設定値は hogeapp/config/setting.yml に各セクションに分かれて error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?> のように書かれています ▲ ▼ symfonyのエラー symfonyのエラーは log ディレクトリ以下に吐き出されます。定番のフレームワーク同様ログレベルを定義できます。 そしてその設定は hogeapp/config/factories.yml で行われます。 通常は本番はログをとらない設定になっているので、まずこんな風にfactories.ymlを修正して prod: logger: class: sfAggregateLogger param: level: info logger: c
別にsymfonyに限ったことじゃないですが、プロジェクトをsvnで管理するときcacheディレクトリとか環境設定ファイルをsvn管理下から外すときの設定。 まずはcacheとlogのディレクトリはディレクトリだけ残してディレクトリ以下はまるっとsvn:ignore。 $ svn propset svn:ignore "*" cache $ svn propset svn:ignore "*" log 設定ファイルは元のベースになるファイルを残しておきたいので。元ファイルを〜.baseとかにリネームして元ファイルはsvn:ignore。 $ cd config $ mv databases.yml databases.yml.base $ mv propel.ini.yml propel.ini.yml.base $ svn del databases.yml propel.ini $ s
symfonyのタスクでpropel:build-formsとかやると、モデルからBaseFormPropelというクラスを継承したものがつくられます(Doctrineの場合はBaseFormDoctrine)。 これは$form->save()とかやれて便利ではあるのですが、以下のような理由で僕は使ってません。 formオブジェクトに共通の処理をもてない テストのしやすさなども考えると、モデルの処理はモデルに書きたい。 なので自分でsfFormを直接継承したクラスをつくって、それをモジュール毎に継承して使ってます。 class myFormBase extends sfForm { // 共通のメソッドとかsfFormのメソッド上書きしたりとか } ここに共通で使うcallbackのメソッドとか書いたりしてます。まだこのベースクラスをつくってる途中なので試行錯誤中です。 あると便利だナー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く