SlideShare a Scribd company logo
 @shin1x1
2015/07/27 WordCamp Kansai 2015
先取り!
PHP 7 と WordPress
(c) 2015 Masashi Shinbara @shin1x1
Shin x blog
http://www.1x1.jp/blog/
2006年から WordPress
いつもお世話になってます!
Agenda
(c) 2015 Masashi Shinbara @shin1x1
• PHP 7 について
• WordPress on PHP 7
• パフォーマンス検証
PHP 7 について
PHP 7
(c) 2015 Masashi Shinbara @shin1x1
• PHP の次期メジャーバージョン

(現在は、PHP 5)
• PHP 6 は、永久欠番
• 2015/11 頃にリリース予定(現在は、β2)
主な特徴
(c) 2015 Masashi Shinbara @shin1x1
• パフォーマンス向上
• 文法上の新機能
• 変更点(廃止された機能)
パフォーマンス向上
(c) 2015 Masashi Shinbara @shin1x1
https://www.zend.com/en/resources/php7_infographic
5.6 の約 2 倍
HHVM と同等
?? 演算子
(c) 2015 Masashi Shinbara @shin1x1
• 連想配列にキーが無ければ、右辺を返す
• キーが存在しなくても、Notice が出ない
$array = ['name' => 'Jun'];
echo $array['name'] ?? 'default';
=> Jun
echo $array['nothing'] ?? 'default';
=> default
=> Noticeエラーにならない!
スカラタイプヒンティング
(c) 2015 Masashi Shinbara @shin1x1
• int / float / string がタイプヒンティングに
• 型が合わなければ、自動変換 or TypeError
class Foo
{
public function say(int $i, float $f, string $s)
{
}
}
$foo = new Foo;
$foo->say(1, 1.0, '1');
戻り値タイプヒンティング
(c) 2015 Masashi Shinbara @shin1x1
• クラス、インターフェース名、スカラ型

callable、self、parent、Closure
class Bar
{
public function get_int(): int
{
return 1;
}
}
匿名クラス
(c) 2015 Masashi Shinbara @shin1x1
•new class で匿名クラスを作成
$object = new class {
public function say()
{
echo 'Hello' . PHP_EOL;
}
};
$object->say(); // Hello
匿名クラス
(c) 2015 Masashi Shinbara @shin1x1
• 基底クラスを継承したり、

インターフェースやトレイトを追加できる
$object = new class implements Readable
{
use ReaderTrait;
};
$object->read();
クロージャの即時実行
(c) 2015 Masashi Shinbara @shin1x1
• JavaScript の IIFE ライクな記法
• クロージャや匿名クラスを即時実行
(function ($message) {
echo $message . PHP_EOL;
})('Hello');
廃止された機能
(c) 2015 Masashi Shinbara @shin1x1
• <% や <%= 記法(<?= は有効)
• switch 文の 多重 default
• mysql 関数(PECL 拡張あり)
• ereg 関数
• split 関数
• =& new 記法
WordPressの移行なら、こちらが重要!
WordPress on PHP 7
WordPress on PHP 7
(c) 2015 Masashi Shinbara @shin1x1
MySQL
PHP 7.0β2
nginx
WordPress
(c) 2015 Masashi Shinbara @shin1x1
WordPress on PHP 7
素の WordPress 4.2
PHP 7 上で動作する
Shin x blog on PHP 7
(c) 2015 Masashi Shinbara @shin1x1
9 年熟成した WordPress
プラグイン多数
テーマカスタマイズ
実働しているWordPressを PHP 7に設置
Shin x blog on PHP 7
(c) 2015 Masashi Shinbara @shin1x1
プラグインやテーマが原因で
動かない。。。
エラーメッセージを見ながら
1つづづ修正していく。
動いた!
修正した箇所
(c) 2015 Masashi Shinbara @shin1x1
PHP Parse error: syntax error, unexpected
'new' (T_NEW)
[修正] =& new Hoge -> = new hoge
PHP Fatal error: Uncaught Error: Call to undefined
function split()
[修正] split() -> explode()
WordPress on PHP 7
(c) 2015 Masashi Shinbara @shin1x1
• WordPress 本体は対応済 ?
• プラグインやテーマは対応が必要な場合も
• エラーメッセージを足がかりに修正

=> WP-DEBUG を true に

=> 開発、検証環境で行う!
パフォーマンス検証
検証環境
(c) 2015 Masashi Shinbara @shin1x1
MySQL
PHP 5.6
MySQL
PHP 7.0β2
nginx
WordPress 4.2
nginx
WordPress 4.2
WordPress 4.2
(c) 2015 Masashi Shinbara @shin1x1
0
8.5
17
25.5
34
5.6 7.0β2
RPS
インストール直後の状態
1秒あたりの処理リクエスト数
7.0β2 の方が 2.4 倍多い
ab -c 30 -n 1000 で計測
Shin x blog
(c) 2015 Masashi Shinbara @shin1x1
0
7.5
15
22.5
30
5.6 7.0β2
RPS
テーマカスタム、プラグイン多数
1秒あたりの処理リクエスト数
7.0β2 の方が 4.5 倍多い
ab -c 30 -n 1000 で計測
メモリ使用量
(c) 2015 Masashi Shinbara @shin1x1
0
1,250
2,500
3,750
5,000
5.6 7.0β2
kilobyte
Shin x blog のピークメモリ
メモリ使用量が 56 %減少

(約半分に!)
memory_get_peak_usage(true) で計測
まとめ
まとめ
(c) 2015 Masashi Shinbara @shin1x1
• PHP 7 が、11月リリース予定
• 分かりやすい特徴は、パフォーマンスアップ
• WordPress 本体は動いている

(プラグイン、テーマは確認を!)
@shin1x1
(c) 2015 Masashi Shinbara @shin1x1

More Related Content

PDF
PHP5.6からPHP7.0への移行
PPTX
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
PDF
Word pressはじめの一歩 テーマ作成ハンズオン
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PDF
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
PPTX
2016/12/17 ASP.NET フロントエンドタスク入門
PDF
Web開発の最新トレンド ~1から知るASP.NET~
PDF
[jjug] Java と Benchmark
PHP5.6からPHP7.0への移行
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
Word pressはじめの一歩 テーマ作成ハンズオン
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2016/12/17 ASP.NET フロントエンドタスク入門
Web開発の最新トレンド ~1から知るASP.NET~
[jjug] Java と Benchmark

What's hot (20)

PDF
Learning from theme review requirements
PDF
Yapc fukuoka crust
PDF
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
PPTX
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
PDF
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
PDF
Lineにおけるspring frameworkの活用
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PDF
WP-CLI (WordBench Sendai 20140628)
PPTX
Aspnet mvc 6の今を紹介
PDF
WordCamp Kansai 2015 CI ハンズオン
PDF
究極にして至高のWAF
PPT
Perl Beginners #7 おとなのWAF
PPTX
CakePHP3で学ぶAPIマネジメント #phpconfuk
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
PPTX
Hands on PhotoBlog App with WordPress REST API and App Inventor
PDF
ASP.NET WEB API 開発体験
PDF
50分で掴み取る ASP.NET Web API パターン&テクニック
PDF
Swaggerで始めるモデルファーストなAPI開発
PDF
【B-1】kintoneでお手軽コールセンター!
PPTX
フロントエンドで GraphQLを使った所感
Learning from theme review requirements
Yapc fukuoka crust
WP-CLIとWordPress公式ディレクトリを活用した爆速サイト構築術 ーインストールからデザイン、ページ作成までを10分でー
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
Lineにおけるspring frameworkの活用
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
WP-CLI (WordBench Sendai 20140628)
Aspnet mvc 6の今を紹介
WordCamp Kansai 2015 CI ハンズオン
究極にして至高のWAF
Perl Beginners #7 おとなのWAF
CakePHP3で学ぶAPIマネジメント #phpconfuk
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Hands on PhotoBlog App with WordPress REST API and App Inventor
ASP.NET WEB API 開発体験
50分で掴み取る ASP.NET Web API パターン&テクニック
Swaggerで始めるモデルファーストなAPI開発
【B-1】kintoneでお手軽コールセンター!
フロントエンドで GraphQLを使った所感
Ad

Viewers also liked (18)

PDF
新標準PSRに学ぶきれいなPHP
PDF
Play jjug2012spring
PDF
traitを使って楽したい話
PDF
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
KEY
Composer による依存管理 と Packagist によるライブラリの公開
PDF
Laravelのeloquent だけ入れた話
PPTX
【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料
 
PPTX
PSR-1 と PSR-2 を 5分でざっくり理解する
PDF
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
PDF
第7回こども病院移転計画調査委員会資料
PDF
東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜
PPTX
はじめて作ったアプリが10,000ダウンロード達成したから自慢する
PDF
SwiftとReactNativeで似たようなUIを作った際の記録
PDF
DMMの闇に触れた話
PDF
Trait とは? その使い道を考えてみる
PDF
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
PDF
Docker ComposeでMastodonが必要なものを梱包する話
PDF
コンテンツ作りの三原則
新標準PSRに学ぶきれいなPHP
Play jjug2012spring
traitを使って楽したい話
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
Composer による依存管理 と Packagist によるライブラリの公開
Laravelのeloquent だけ入れた話
【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料
 
PSR-1 と PSR-2 を 5分でざっくり理解する
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
第7回こども病院移転計画調査委員会資料
東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜
はじめて作ったアプリが10,000ダウンロード達成したから自慢する
SwiftとReactNativeで似たようなUIを作った際の記録
DMMの闇に触れた話
Trait とは? その使い道を考えてみる
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Docker ComposeでMastodonが必要なものを梱包する話
コンテンツ作りの三原則
Ad

Similar to 先取り!PHP 7 と WordPress (20)

PDF
PHPの今とこれから2016
PDF
PHPの今とこれから2015
PDF
PHPの今とこれから2019
PDF
PHPの今とこれから2014
PDF
最近の PHP の話
PDF
PHPの今とこれから2023
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
PDF
Phpのはなし
PDF
徹底攻略!PHP5.4
PDF
PHPの今とこれから2018
PDF
PHPの今とこれから2021
PDF
Hack/HHVM 入門
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PPTX
Lt資料 php7.0 張田浩明
PPTX
Lt資料 php7.0 張田浩明
PDF
Ph per のための php 最適
PDF
PHPの今とこれから2022
PPTX
PHP基礎勉強会
PPTX
Php入門
PHPの今とこれから2016
PHPの今とこれから2015
PHPの今とこれから2019
PHPの今とこれから2014
最近の PHP の話
PHPの今とこれから2023
PHPの今とこれから2025 (PHP Conference Japan 2025)
PHPの今とこれから2024 at PHP Conference Japan 2024
Phpのはなし
徹底攻略!PHP5.4
PHPの今とこれから2018
PHPの今とこれから2021
Hack/HHVM 入門
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
Lt資料 php7.0 張田浩明
Lt資料 php7.0 張田浩明
Ph per のための php 最適
PHPの今とこれから2022
PHP基礎勉強会
Php入門

More from Masashi Shinbara (20)

PDF
日本語消えたスライド
PDF
Twilio入門 -Web アプリ編-
PDF
いまどきのPHP開発現場 -2015年秋-
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
How to learn Laravel5 application from Authentication
PDF
認証機能で学ぶ Laravel 5 アプリケーション
PDF
Azure Websites で作るスケーラブルな PHP アプリケーション
PDF
わかってるフレームワーク Laravel
PDF
ビルドサーバで使うDocker
PDF
Ansible ではじめるサーバ作業の自動化
PDF
開発現場で活用するVagrant
PDF
PHPコードではなく PHPコードの「書き方」を知る
PDF
Heroku で作る
スケーラブルな 
PHP アプリケーション
PDF
Vagrant体験入門
PDF
VagrantユーザのためのDocker入門
PDF
Laravel ユーザなら知っておくべきAuthオートログイン
PDF
キャラ立ちしたエンジニアになる!
PDF
Composer 再入門
PDF
Vagrant で PHP 開発環境を作る ハンズオン
PDF
Twilio API を PHP で触ってみよう
日本語消えたスライド
Twilio入門 -Web アプリ編-
いまどきのPHP開発現場 -2015年秋-
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
How to learn Laravel5 application from Authentication
認証機能で学ぶ Laravel 5 アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
わかってるフレームワーク Laravel
ビルドサーバで使うDocker
Ansible ではじめるサーバ作業の自動化
開発現場で活用するVagrant
PHPコードではなく PHPコードの「書き方」を知る
Heroku で作る
スケーラブルな 
PHP アプリケーション
Vagrant体験入門
VagrantユーザのためのDocker入門
Laravel ユーザなら知っておくべきAuthオートログイン
キャラ立ちしたエンジニアになる!
Composer 再入門
Vagrant で PHP 開発環境を作る ハンズオン
Twilio API を PHP で触ってみよう

先取り!PHP 7 と WordPress

  • 1.  @shin1x1 2015/07/27 WordCamp Kansai 2015 先取り! PHP 7 と WordPress
  • 2. (c) 2015 Masashi Shinbara @shin1x1 Shin x blog http://www.1x1.jp/blog/ 2006年から WordPress いつもお世話になってます!
  • 3. Agenda (c) 2015 Masashi Shinbara @shin1x1 • PHP 7 について • WordPress on PHP 7 • パフォーマンス検証
  • 5. PHP 7 (c) 2015 Masashi Shinbara @shin1x1 • PHP の次期メジャーバージョン
 (現在は、PHP 5) • PHP 6 は、永久欠番 • 2015/11 頃にリリース予定(現在は、β2)
  • 6. 主な特徴 (c) 2015 Masashi Shinbara @shin1x1 • パフォーマンス向上 • 文法上の新機能 • 変更点(廃止された機能)
  • 7. パフォーマンス向上 (c) 2015 Masashi Shinbara @shin1x1 https://www.zend.com/en/resources/php7_infographic 5.6 の約 2 倍 HHVM と同等
  • 8. ?? 演算子 (c) 2015 Masashi Shinbara @shin1x1 • 連想配列にキーが無ければ、右辺を返す • キーが存在しなくても、Notice が出ない $array = ['name' => 'Jun']; echo $array['name'] ?? 'default'; => Jun echo $array['nothing'] ?? 'default'; => default => Noticeエラーにならない!
  • 9. スカラタイプヒンティング (c) 2015 Masashi Shinbara @shin1x1 • int / float / string がタイプヒンティングに • 型が合わなければ、自動変換 or TypeError class Foo { public function say(int $i, float $f, string $s) { } } $foo = new Foo; $foo->say(1, 1.0, '1');
  • 10. 戻り値タイプヒンティング (c) 2015 Masashi Shinbara @shin1x1 • クラス、インターフェース名、スカラ型
 callable、self、parent、Closure class Bar { public function get_int(): int { return 1; } }
  • 11. 匿名クラス (c) 2015 Masashi Shinbara @shin1x1 •new class で匿名クラスを作成 $object = new class { public function say() { echo 'Hello' . PHP_EOL; } }; $object->say(); // Hello
  • 12. 匿名クラス (c) 2015 Masashi Shinbara @shin1x1 • 基底クラスを継承したり、
 インターフェースやトレイトを追加できる $object = new class implements Readable { use ReaderTrait; }; $object->read();
  • 13. クロージャの即時実行 (c) 2015 Masashi Shinbara @shin1x1 • JavaScript の IIFE ライクな記法 • クロージャや匿名クラスを即時実行 (function ($message) { echo $message . PHP_EOL; })('Hello');
  • 14. 廃止された機能 (c) 2015 Masashi Shinbara @shin1x1 • <% や <%= 記法(<?= は有効) • switch 文の 多重 default • mysql 関数(PECL 拡張あり) • ereg 関数 • split 関数 • =& new 記法 WordPressの移行なら、こちらが重要!
  • 16. WordPress on PHP 7 (c) 2015 Masashi Shinbara @shin1x1 MySQL PHP 7.0β2 nginx WordPress
  • 17. (c) 2015 Masashi Shinbara @shin1x1 WordPress on PHP 7 素の WordPress 4.2 PHP 7 上で動作する
  • 18. Shin x blog on PHP 7 (c) 2015 Masashi Shinbara @shin1x1 9 年熟成した WordPress プラグイン多数 テーマカスタマイズ 実働しているWordPressを PHP 7に設置
  • 19. Shin x blog on PHP 7 (c) 2015 Masashi Shinbara @shin1x1 プラグインやテーマが原因で 動かない。。。 エラーメッセージを見ながら 1つづづ修正していく。 動いた!
  • 20. 修正した箇所 (c) 2015 Masashi Shinbara @shin1x1 PHP Parse error: syntax error, unexpected 'new' (T_NEW) [修正] =& new Hoge -> = new hoge PHP Fatal error: Uncaught Error: Call to undefined function split() [修正] split() -> explode()
  • 21. WordPress on PHP 7 (c) 2015 Masashi Shinbara @shin1x1 • WordPress 本体は対応済 ? • プラグインやテーマは対応が必要な場合も • エラーメッセージを足がかりに修正
 => WP-DEBUG を true に
 => 開発、検証環境で行う!
  • 23. 検証環境 (c) 2015 Masashi Shinbara @shin1x1 MySQL PHP 5.6 MySQL PHP 7.0β2 nginx WordPress 4.2 nginx WordPress 4.2
  • 24. WordPress 4.2 (c) 2015 Masashi Shinbara @shin1x1 0 8.5 17 25.5 34 5.6 7.0β2 RPS インストール直後の状態 1秒あたりの処理リクエスト数 7.0β2 の方が 2.4 倍多い ab -c 30 -n 1000 で計測
  • 25. Shin x blog (c) 2015 Masashi Shinbara @shin1x1 0 7.5 15 22.5 30 5.6 7.0β2 RPS テーマカスタム、プラグイン多数 1秒あたりの処理リクエスト数 7.0β2 の方が 4.5 倍多い ab -c 30 -n 1000 で計測
  • 26. メモリ使用量 (c) 2015 Masashi Shinbara @shin1x1 0 1,250 2,500 3,750 5,000 5.6 7.0β2 kilobyte Shin x blog のピークメモリ メモリ使用量が 56 %減少
 (約半分に!) memory_get_peak_usage(true) で計測
  • 28. まとめ (c) 2015 Masashi Shinbara @shin1x1 • PHP 7 が、11月リリース予定 • 分かりやすい特徴は、パフォーマンスアップ • WordPress 本体は動いている
 (プラグイン、テーマは確認を!)
  • 29. @shin1x1 (c) 2015 Masashi Shinbara @shin1x1