Home > アーカイブ > 2013-04

2013-04

PHP5.5 のコードキャッシュは APC から Zend OPcache へ

  • 2013-04-29 (月)
  • PHP
この記事の所要時間: 232

PHP5.5 からコードキャッシュとして標準バンドルされた Zend OPcache を試してみました。

第6回関西PHP勉強会で Zend OPcache についてLTしたのでインストールやベンチマークなどはこちらで。

PHP 5.5 Zend OPcache from Masashi Shinbara

  • beta4時点では、Zend OPcache は拡張で提供され、opcache.so インストールされる。
  • Zend OPcache を使うには、php.ini で zend_extension=opcache.so の記述が必要。
  • やっぱりデフォルトでインストールされるのは楽。
  • PHP5.5リリースと共に使えるので安心。(PHP5.4 対応の APC はまだ beta)
  • ユーザデータのキャッシュはできないので、別の方法が必要。

OCP – OPcache Control Panel

Zend OPcache の利用状況(設定、キャッシュ量など)が確認できるスクリプトが gist にあったので試してみました。

OCP – Opcache Control Panel

1 スクリプトなので、設置して、ブラウザからアクセスするだけです。アクセスすると下のようにキャッシュ状況などが表示されます。

ocp

参考

Zend OPcache (Zend Optimizer+) のソース、設定項目

Zend OPcache のソースコードは、github にて公開されています。こちらに設定項目の解説などもあります。

zend-dev/ZendOptimizerPlus · GitHub

Zend OPcache(Zend Optimizer+) を PHP5.5 に入れる RFC

PHP: rfc:optimizerplus [PHP Wiki]

Zend OPcache と APC とのベンチマーク比較

OPcode Cache Benchmarks

  • PHP5.5.0-dev + FastCGI / APC 3.1.15-dev(現在はリポジトリから削除)/ Zend OPcache
  • 概ね Zend OPcache が APC より数%から20%弱速い
  • Zend Framework1.5 だけ異常に速い(149%!)optimize が合っている?

APC の現在の状況など

setup – Is APC compatible with PHP 5.4 or PHP 5.5

  • APC の PHP5.4 以降対応は現在も beta(概ね問題無いようだけど)
  • APC の開発状況を見ると PHP5.5 対応は無いかも。
  • Zend Optimizer+ は、PHP5.2以上なら対応しているので、PHP5.4 でも APC の代わりに使ってみようかな。
  • コメント (Close): 0
  • トラックバック (Close): 0

第3回関西アンカンファレンスを開催します

この記事の所要時間: 311

2年ぶりに関西アンカンファレンスを大阪で開催します。

アンカンファレンスって何?の方は、以前開催したエントリをご参照下さい。

前回開催の様子はこちらから。

関西アンカンファレンスの良さ

関西アンカンファレンスの良さといえば、気軽に発表できる、ということです。当日会場に行ってから、発表者が自ら発表を申し出る方式なので、その場の雰囲気で発表することができます。

もちろん、がっつりスライドを作って準備していくのも良いのですが、スライドは一切準備していなくても、ブラウザやツールなどをプロジェクタで映して話すというのもありです。一人で不安なら二人で掛け合いのように発表しても大丈夫です。

参加者の内、3割くらいの人が発表者になるので、各セッションに積極的に参加しよう、盛り上げようという雰囲気ができあがります。(不思議なもので、自分が運営や発表側に回ると自然と前のめりで参加しようという気分になります。)

こういった雰囲気なので、発表に慣れていない人が試してみる場としては格好の機会だと思います。

もちろん、色々な方の発表を聞くだけでも楽しいのですが、できれば発表してみるとより楽しめると思うので、ぜひ発表してみて下さい。

開催概要

開催概要は以下になります。

■ 開催概要
・日時:2013/05/18(土) 10:30-17:00(開場:10:00)
・場所:靭テニスセンター地下 会議室
・地図:http://www.utsubogroup.com/
・参加費:1,000円 / 4,500円(懇親会セット)

発表会場

発表会場は隣接する2部屋です。同時に 2 セッションが進行するので、発表する方も聞く方もお好きな方へ移動して下さい。

発表枠

発表枠は通常枠と短め枠の2つがあります。

通常枠は「1セッション20分(15分発表+5分移動、準備)」です。こちらの枠が基本となります。

短め枠は「1セッション10分(08分発表+2分移動、準備)」です。こちらは少し時間短めなので、発表初心者の方やちょっと話したいという方向けです。(もちろん、発表初心者の方が通常枠を取って頂いてもokです)

発表内容

発表内容は IT / Web に関する内容であれば何でも ok です。前回、前々回のセッション一覧を見て頂ければ、多岐に渡ることがお分かりかと:D

ただ、色々なバックグラウンドを持つ方が集まるイベントなので、何かを貶めたり攻撃したりするような内容は避けましょう。

発表枠の申し込み

当日にホワイトボードに時間枠を記載しますので、発表したい時間、部屋のところに付箋を貼っていくだけです。いつ発表するか、どんな発表が出るかは当日のお楽しみです。

参加申込

参加申し込みは下記サイトからお願いします。

今回は参加費、懇親会費ともにお申込み時に頂く形になっていますので、参加される方は下記サイトより申込をお願いします。決済はクレジットカード、paypalの他にコンビニでも可能です。

では、みなさんからの参加お待ちしていますー!

第3回関西アンカンファレンス
※ちなみに 5/18 は関西では多くのイベントが行われますが、途中抜け、途中参加も可能です:D

  • コメント (Close): 0
  • トラックバック (Close): 0

AWS SDK for PHP 2 をインストールして AutoScaling の設定を行う

この記事の所要時間: 1053

PHP から AWS を操作するためのライブラリ「AWS SDK for PHP」の新バージョン「AWS SDK for PHP 2」を触ってみました。

AWS SDK for PHP 2 リリース直後は対応サービスが少なかったのですが、現在は主要なサービスは網羅しているようです。

AWS SDK for PHP 2 の主な特徴

https://github.com/aws/aws-sdk-php

  • PHP5.3.3以降
  • PSR-0, PSR-1, PSR-2対応
  • Composer, PEAR でのインストール、phar ファイルの配布
  • Guzzleベース
  • namespace, Iterators, Waiters, Enums, レスポンスモデル, 例外など、いまどきの実装に対応

AWS SDK for PHP 2 のインストール

AWS SWK for PHP 2 は、phar ファイル、Composer 、PEAR のいずかれの方法でインストールすることができます。
phar ファイルが一番お手軽(ダウンロードするだけ)なのですが、ソースが読みづらいのと、APC が効かないという話もあるので、ここでは Composer でインストールします。

  • まず composer.json を作成します。
    $ vim composer.json
    {
      "require": {
        "aws/aws-sdk-php": "2.*"
      }
    }
    

  • 次に Composer をインストールします。
    $ curl -s "http://getcomposer.org/installer" | php
    #!/usr/bin/env php
    All settings correct for using Composer
    Downloading...
    
    Composer successfully installed to: /path/to/composer.phar
    Use it: php composer.phar
    

  • Composer で AWS SDK for PHP 2 をインストールします。依存ライブラリもダウンロードするので時間がかかる場合があります。
    $ php composer.phar install
    Loading composer repositories with package information
    Installing dependencies
      - Installing symfony/event-dispatcher (v2.2.1)
          Loading from cache
    
            - Installing guzzle/guzzle (v3.3.1)
          Loading from cache
    
            - Installing aws/aws-sdk-php (2.2.1)
          Loading from cache
    
          symfony/event-dispatcher suggests installing symfony/dependency-injection (2.2.*)
      symfony/event-dispatcher suggests installing symfony/http-kernel (2.2.*)
      aws/aws-sdk-php suggests installing doctrine/cache (Adds support for caching of credentials and responses)
      aws/aws-sdk-php suggests installing monolog/monolog (Adds support for logging HTTP requests and responses)
      aws/aws-sdk-php suggests installing symfony/yaml (Eases the ability to write manifests for creating jobs in AWS Import/Export)
      Writing lock file
      Generating autoload files
    

    インストールが完了すると以下のようなファイル、ディレクトリが存在します。

    $ ls
    composer.json composer.lock composer.phar vendor
    

    AWS SDK for PHP 2 の参考情報

    • github

    基本的な情報が README.md にあります。下記の User Guide や API リファレンスなどへのリンクもあります。

    https://github.com/aws/aws-sdk-php/

    • User Guide

    AWS SDK for PHP 2 の情報ならこれが一番分かりやすいです。SDK にも aws/aws-sdk-php/docs 以下に含まれていますが、下記サイトからも参照できます。
    インストール方法やサンプルソース、アーキテクチャ、パフォーマンスガイド、旧バージョンからのマイグレーションなど充実しています。

    AWS SDK for PHP 2 — AWS SDK for PHP 2.2.1 documentation

    Auto Scaling の設定

    現行は API でしか操作できない Auto Scaling の設定を AWS SDK for PHP 2 でやってみましょう。
    ELB 配下に立てる Web サーバのインスタンスを Auto Scaling で起動するイメージです。
    必要な ELB と Web サーバの AMI はあらかじめ用意しておきます。

    Auto Scaling の設定

    Auto Scaling の設定を行います。
    AWS SDK for PHP 2 の書き方としては、AWS の API へのパラメータを連想配列で渡す形になります。基本は全てのパラメータを連想配列で渡すだけなので分かりやすいですね。(このあたりは CakePHP っぽい)

    Auto Scaling 設定内容を確認

    Auto Scaling の内容は Management Console では確認できないので、API で確認します。

    実行すると以下のように設定された AutoScaling が確認できます。

    array(2) {
      'AutoScalingGroups' =>
      array(1) {
        [0] =>
        array(18) {
          'Tags' =>
          array(0) {
          }
          'SuspendedProcesses' =>
          array(0) {
          }
          'AutoScalingGroupName' =>
          string(2) "as"
          'HealthCheckType' =>
          string(3) "ELB"
          'CreatedTime' =>
          string(24) "2013-04-16T15:10:20.753Z"
          'EnabledMetrics' =>
          array(0) {
          }
          'LaunchConfigurationName' =>
          string(7) "as_conf"
          'Instances' =>
          array(2) {
            [0] =>
            array(5) {
              'HealthStatus' =>
              string(7) "Healthy"
              'AvailabilityZone' =>
              string(15) "ap-northeast-1c"
              'InstanceId' =>
              string(10) "xxxxxxxxxxxx"
              'LaunchConfigurationName' =>
              string(7) "as_conf"
              'LifecycleState' =>
              string(9) "InService"
            }
            [1] =>
            array(5) {
              'HealthStatus' =>
              string(7) "Healthy"
              'AvailabilityZone' =>
              string(15) "ap-northeast-1c"
              'InstanceId' =>
              string(10) "xxxxxxxxxxxx"
              'LaunchConfigurationName' =>
              string(7) "as_conf"
              'LifecycleState' =>
              string(9) "InService"
            }
          }
          'DesiredCapacity' =>
          string(1) "2"
          'AvailabilityZones' =>
          array(1) {
            [0] =>
            string(15) "ap-northeast-1c"
          }
          'LoadBalancerNames' =>
          array(1) {
            [0] =>
            string(2) "as"
          }
          'MinSize' =>
          string(1) "2"
          'VPCZoneIdentifier' =>
          array(0) {
          }
          'HealthCheckGracePeriod' =>
          string(3) "200"
          'DefaultCooldown' =>
          string(3) "300"
          'AutoScalingGroupARN' =>
          string(125) "arn:aws:autoscaling:ap-northeast-1:xxxxxxxxxxxxxxxxxxxxxxxxx"
          'TerminationPolicies' =>
          array(1) {
            [0] =>
            string(7) "Default"
          }
          'MaxSize' =>
          string(1) "5"
        }
      }
      'ResponseMetadata' =>
      array(1) {
        'RequestId' =>
        string(36) "xxxx"
      }
    }
    

    Auto Scaling を停止、削除

    Auto Scaling をそのままにしておくとインスタンスを停止しても、また起動してしまうので、停止、削除を行います。この処理を行うと Auto Scaling で起動したインスタンスも停止します。

    Auto Scaling の 注意点

    • HealthCheckType=ELB の時は、HealthCheckGracePeriod の指定が必要。
    • HealthCheckGracePeriod が短すぎると、インスタンス起動してELBのヘルスチェックが通るまでに異常とみなされて、インスタンスが終了する。
      => インスタンスが MinSize に足りなければ、起動->終了を繰り返して課金だけされる恐れがある。(EC2 インスタンスは一度起動すると最低 1 時間分は課金される。)
    • ヘルスチェックで異常とみなされたインスタンスは強制的に Terminate される。
    • 試した後は Auto Scaling を止めておく。
    • コメント (Close): 0
    • トラックバック (Close): 0

    PHPカンファレンス関西2013を6/1に開催します!

    この記事の所要時間: 214

    3回目を迎えてすっかり定番となってきましたPHPカンファレンス関西を6/1に開催します。

    phpcon_kansai2013

    今年のテーマは「PHPの未来を関西から」ということで、関西をキーワードに準備を進めています。
    また、昨年はその前年の方式をより発展させた形式でしたが、今年は色々と新しい試みを盛り込んでいます。

    その中の一つとして、関西で活躍されている様々なプログラム言語コミュニティの方々とのパネルディスカッションを考えています。
    今のところ、下記の言語コミュニティの方に登壇頂ける予定です。

    • Java
    • Scala
    • Python
    • node.js(JavaScript)
    • PHP

    PHPを外から見たり、他の言語を知ることによって、あらためてPHPを深く知るきっかけになればと思います。

    他にもまだまだあるのですが、参加申込を開始するまでしばしお待ちを。参加申込は5月入った頃を予定していますので、まずは6/1のスケジュールを確保しておいて下さい:D

    そんなPHPカンファレンス関西2013なのですが、現在は下記のような内容を絶賛募集中です。

    スピーカー募集中

    今年もセッションを公募していますので、PHPに関するセッションを発表したい方からの応募をお待ちしています。
    今年は「関西」がテーマとなっていますので、関西PHPerの方からの応募を熱烈にお待ちしています。

    ちなみにセッションで発表すると以下の特典があります。

    • PHPカンファレンス関西2013「オリジナルTシャツ」贈呈
    • 懇親会に無料でご招待

    さらに加えると以下ももれなく付いてきます。

    • 懇親会でもてる

    応募は以下から!

    セッション講演者募集

    企業、個人スポンサー募集中

    PHPカンファレンス関西2013をご支援頂ける企業、個人を募集しています。詳細については下記をご参照ください。

    企業スポンサーを募集します – PHPカンファレンス関西2013
    個人スポンサーを募集します – PHPカンファレンス関西2013

    ブース出展コミュニティ募集中

    ブース出展を行なって頂けるコミュニティを募集しています。PHPに関連するソフトウェア、技術などの勉強会などを開催されているコミュニティの方からの出展をお待ちしています。

    なおこちらでは有志による非営利のコミュニティを想定していますので、企業などのブース出展については、上記のスポンサー募集からお問い合わせ下さい。

    お問い合わせフォーム(件名に「ブース出展について」と明記下さい。)

    • コメント (Close): 0
    • トラックバック (Close): 0

    Home > アーカイブ > 2013-04

    検索
    フィード
    メタ情報

    Return to page top