タグ: Framework

速いアプリケーションの作り方

Phalcon Adventカレンダー18日目として書いています。

一台のアプリケーションサーバーで10リクエスト/秒で十分というサービスであれば、どんなプラットフォームを選んでも問題ありません。一台のサーバーが10リクエスト/秒しか処理できなくても、ページがキャッシュできるならリバースプロキシで簡単に数千リクエスト/秒以上でサービスできます。このようなサービスであればPhalconのようなフレーワムワークを使わなくても大丈夫です。

しかし、メッセージング系などリアルタイム性の高いサービス、つまりHTTPキャッシュがあまり有効に利用できないシステムでは速度が非常に重要です。

もっと読む

Phalcon PHPとSails Node.jsのベンチマーク

以前にフレームワーク対決:Node.js+SailsとPHP+PhalconのベンチマークとしてPhalconとSailsのベンチマークを行ったのですが、Apacheを利用した場合のPhalconの性能が全く違うので取り敢えずブログに書きます。

このエントリはPhalcon Adventカレンダー17日目として書きました。少し前に設定がおかしいことに気づいて非公開にしていた物を修正しています。

もっと読む

Sailsで全てのCPUコアを使う

Node.jsのMVCフレームワークであるSailsはインストールも簡単で、気軽に試せます。しかし、Node.jsはシングルプロセス&スレッドで動作するので今時のマルチコアCPUではその性能はフルに発揮できません。以前はNginxなどで設定するなど、色々面倒でしたがPM2を利用すると簡単にプロセス管理が行えます。もちろんSails以外のNode.jsアプリケーションのプロセス管理にも利用できます。

もっと読む

Phalcon2.xのRPMパッケージを作る

このエントリはPhalcon PHP Advent Calendar 2014 4日目のエントリです。2日目としてPhalcon 1.xのRPMパッケージを作っています。今回はPhalcon2のRPMパッケージをphp-phalcon2.xパッケージとして作ります。多分動くと思いますが、ほとんどテストしていないので問題があったらコメントをお願いします。

php-phalconとphp-phalcon2パッケージは同時にインストールできないので注意してください。

もっと読む

Phalcon PHPのRPMパッケージを作る

PHP最速フレームワークのPhalconですが、RPMパッケージを使ったシステムへのインストールは最速ではありません。Ubuntuの場合、パッケージがあってapt-getで一発インストールできるのですが、デフォルト/EPELリポジトリにはRHEL/CentOS/Fedora用のRPMパッケージはありません。そこでPhalconのRPMパッケージを自分で作る手順を紹介します。

このエントリはPhalcon PHP Advent Calendar 2014 2日目のエントリです。

追記:SRPMファイルのダウンロードリンクを忘れていました。次のURLでダウンロードできます。

私が普段使っている環境はビルドツールが全て揃っています。もし依存性(BuildRequires、Requires)などが足りなかったら教えてください :)

もっと読む

Rails ActriveRecordとSQLインジェクションと実際のアプリケーション

先日はActive RecordのSQLインジェクションパターンを紹介しました。今回は脆弱なコードを見つける事を試みようと思います。脆弱とは言っても攻撃可能であることは意味しません。コーディングとして脆弱であるという意味です。実際に攻撃可能であるかどうかまでは確認していません。

 

もっと読む

間違いだらけのHTTPセッション管理とその対策

HTTPセッション管理はWebセキュリティの中核と言える機能です。Webセキュリティの中核であるHTTPセッション管理に設計上のバグがある事は少なくありません。今回のエントリはPHP Webアプリ開発者ではなく、主にWebフレームワーク側の開発者、つまりPHP本体の方に間違いがあるという話しです。Webアプリ開発者の回避策も紹介します。

まずセキュリティの基本として「入力のバリデーションを行い、正当な入力のみを受け入れる」があります。しかし、PHPに限らず多くのセッション管理機構は当たり前の「入力のバリデーションを行い、正当な入力のみを受け入れる」を行っていません。セッションIDの再生成(リセット)も不完全な物が多いと思います。

参考:

もっと読む

PHP最速フレームワークPhalconのインストール

Phalconを初めて知ったのはもう忘れるくらい昔の話です。今でも活発に開発が行われており、かなり使えるフレームワークに仕上がっています。

Phalconは他のどのPHPフレームワークと違う特徴があります。PhalconはPHPのフレームワークですが、PHPで書かれていません。C言語で書かれています。つまり、PHPのネイティブモジュールとして動作するPHPフレームワークです。

もっと読む

Rails4 Windows `require’: cannot load such file — sqlite3/sqlite3_native (LoadError)

多分、WindowsにRails4をインストールしようとして困っている方も多い(?)と思うので簡単にエントリを書きました。

Rails4をWindowsで使うにはWindows版のRuby 2.0とDevKitがあれば良いとあったのでこれらをインストールした後に

gem install rails

を実行するとしばらくするとインストールが完了したが、テストアプリを作り実行しようとしたら もっと読む

第3回 はじめてのZendFrameworkアプリケーション

第3回 はじめてのZendFrameworkアプリケーション がgihyo.jpで公開されています。

http://gihyo.jp/dev/serial/01/zf-ajax/0003

コメント、質問、不具合など、気づかれた事がございましたらコメントを頂けると助かります。

次回はこのダメダメな初めてアプリケーションを少しマシにします。
その次は4/30にリリースされたZend Framework 1.8の紹介をします。

Zend_Toolの使い方 – パスに入れない

Zend_ToolのzfコマンドがZendFrameworkのバージョンによって使えたり、使えなかったりする問題で困っていたのですが原因が分かりました。

Zend_Toolのzfコマンドでプロジェクトを作成すると

$ zf create project

ZendFrameworkのファイルをカレントディレクトリのlibraryに全てコピーします。プロジェクトの雛形にはapplication/boostrap.phpが含まれ、ここでinclude_pathが設定されます。boostrap.phpは、エントリポイントとなるpublic/index.php

// @see application/bootstrap.php
$bootstrap = true;
require ‘../application/bootstrap.php’;

から毎回必ず呼ばれるので

// you may wish to add other paths here, or keep system paths: set_include_path(‘../library’ . PATH_SEPARATOR . get_include_path()
set_include_path(‘../library’);

ZendFrameworkのアーカイブはどこに展開しても構わないようになっています。

この事は知っていたのですが、zfコマンドを使わないでZendFrameworkを使えるよう、PEARをインストールしたディレクトリにlibrary/Zendディレクトリをコピーし、デフォルトのphp.iniでinlcude_pathに設定してZendFrameworkを使うようにしていました。

これがどうもダメだったようです。Zend_Toolのディレクトリ構成を見て、似通った構成だったのでもしかして、と思いinclude_path設定を変えて試してみました。すると動かないと思っていたバージョンでもzfコマンドが動作するようになりました。インクルードパスにZendFrameworkのライブラリをパスにいれると、意図しないスクリプトが読み込まれてエラーになったりしていたようです。中途半端に動く物もあったりしたのでですが「previrew版だから仕方ないか」と思って詳しく調べていませんでした。これで一つすっきりしました。

Zend_Toolを試す場合、ZendFrameworkのZendディレクトリはinclude_pathに入れないようにした方が良いようです。基本的な事ですが、探しても情報が見つからなかったので書いておきます。