訳:PHPの Webサイトパフォーマンス
これはひと通り押さえておく必要あるな。
Website Performance: PHP at Monitor Everything IT: Website, Server, Application, Network. 100% Free!
====
キャッシュを使う
コンパイルするか、インタプリタを使うか
コンテンツを削減する
マルチスレッドとマルチプロセス
文字列
イテレーションの構築(for, while)
セレクションの構築(if, switch)
関数と引数
オブジェクト指向の構築
セッションの取り扱い
型のキャスト
圧縮
エラーハンドリング
定義、スコープ
車輪の再発明をするな
コードの最適化
DASDの替わりにRAMを使う
サービスを使う
インストールと設定
その他
Amazon DynamoDB : PHPから使う
注意: 以下、AWS SDK for PHP 1.x の説明。 2013.10時点では2.xなので、気休め程度に。( SDK for PHP1.xから2.xへのマイグレーションガイドはこちら )
パッケージインストール
$ sudo yum install php httpd mysql mysql-server php-mysql php-pear php-xml $ sudo pear channel-discover pear.amazonwebservices.com $ sudo pear install aws/sdk
セキュリティ設定
$ sudo cp /usr/share/pear/AWSSDKforPHP/config-sample.inc.php /usr/share/pear/AWSSDKforPHP/config.inc.php $ sudo vi /usr/share/pear/AWSSDKforPHP/config.inc.php $ sudo diff /usr/share/pear/AWSSDKforPHP/config-sample.inc.php /usr/share/pear/AWSSDKforPHP/config.inc.php 57c57 < 'key' => 'development-key', --- > 'key' => 'xxxxx', 61c61 < 'secret' => 'development-secret', --- > 'secret' => 'xxxxx', 68c68 < 'default_cache_config' => '/tmp/cache/', --- > 'default_cache_config' => '',
キャッシュディレクトリ作成
$ sudo mkdir /tmp/cache $ sudo chmod -R 777 /tmp/cache
次に、exampleのテーブルを作成する。
- テーブル名:ProductCatalog (Id,....)
- Primary Keyタイプ:Hash
- Hash属性名・タイプ: Id (Number)
- Range 属性名・タイプ:N/A
- スループット: R=10, W=5
EclipseかVisual StudioのAWS Explorerでテーブル内のデータをビジュアルに視ることができる。( http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/LoadData.html )
とりあえず接続するにはエンドポイントにつなぐ。2012.2.10時点では、US-EASTのみなので、https://dynamodb.us-east-1.amazonaws.com を set_hostnameする。
http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/SettingUpTestingSDKPHP.html
とりあえず、サンプルのデータを流し込む。
AWSデモ チートシート
1. インスタンス起動 (セキュリティグループは default)
2. インスタンス起動待ちの間にRDS起動
small, 100G, samurai: samurai/samurai
$ sudo yum install httpd php mysql php-mysql
$ sudo service httpd start
$ sudo chmod 777 /var/www/html
4. サンプルアプリをデプロイ
$ wget http://ec2-175-41-201-96.ap-northeast-1.compute.amazonaws.com/sample.tgz
$ tar zxvf
$ cp sample/* /var/www/html/html/
$ vi /var/www/html/index.html
$ vi /var/www/html/index.php
ブラウザで確認
5. RDSに接続
$ mysql -usamurai -psamurai -h xxx samurai
mysql> status;
mysql> quit;
6. サンプルアプリを実行
vi sample/sample.sql
$ mysql -x s x s
mysql> desc comment;
mysql> select * from comment;
mysql> quit;
$ vi /var/www/html/sample.php
ブラウザで確認
7. 間に、RDSのスナップショットを作っておく
8. 間に、ロードバランサーを作っておく(samurai-lb)
9. インスタンスstop & AMI作成(samurai-ami)
10. インスタンスを2個起動する(web1,web2)
11. ロードバランサーに2このインスタンス(web1,web2)を加える
12. Route53でEBLにCNAMEを与える (samurai.demo-a.ws)
12. インスタンスを起動する(dev1)
13. RDSを起動する(dev)