php-timecopを
実戦投入してみた
                               hnw
     PHPカンファレンス2012(2012/09/15) 発表資料
自己紹介

@hnw

勤務先:KLab株式会社

 PHPのコードを書いたりコードレビューしたり

 時々パフォーマンスチューニングしたり

 エンジニアを絶賛募集中です
社内で困っていたこと
社内PHP案件で「仮想カレンダー」のニーズ

 時刻ベースでの動作確認がしたい

  テンプレート表示 / DB値の時刻にイベント発生

 標準の時刻系関数を使っている

  例: strtotime( -7days )

  現在時刻を仮想的にずらすのは難しい
それ
PHPエクステンションで
    できるよ!
php-timecop作りました
自作のPHPエクステンション

 https://github.com/hnw/php-timecop

PHP内のみ現在時刻を仮想的にズラす関数を提供

全ての日付系関数/クラスを上書き

 mbstringの実装を参考にした

 大半の実装は第二引数を補って元の関数を呼び出し
php-timecop動作例
時間移動(unixtimeで指定)




php-timecop動作例
時間移動(unixtimeで指定)



    現在時刻がunixtime=0にズレる




php-timecop動作例
導入までの軌跡
2012年6月 有休を使ってプロトタイプ作成

2012年6月 社内で紹介したところ、人柱案件が立候補

     (しばらく別件で忙しくて放置)

2012年8月 メモリリークを修正・機能追加

2012年8月 社内開発Webサーバ30台にphp-timecop導入

2012年9月 人柱案件で仮想カレンダー機能テスト中
仮想カレンダー機能
まとめ

php-timecop作りました

 PHPの現在時刻を仮想的にズラせます!

 安定性は問題なし(いまのところ)

興味を持った方はGitHubまたは現実世界で

 IssueやPull Requestをお待ちしております
ご静聴
 ありがとう
ございました

More Related Content

KEY
PHPエクステンションの開発tips
PDF
PHPの拡張モジュールをGoで作る
PDF
php-buildがいかに便利かを力説する
PDF
PHPの今とこれから2015
PDF
PHP7の拡張モジュール事情
PDF
PHP7の内部実装から学ぶ性能改善テクニック
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PDF
PHPNGの動向
PHPエクステンションの開発tips
PHPの拡張モジュールをGoで作る
php-buildがいかに便利かを力説する
PHPの今とこれから2015
PHP7の拡張モジュール事情
PHP7の内部実装から学ぶ性能改善テクニック
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PHPNGの動向

What's hot (20)

PDF
Php非同期の技法
PDF
Phpでアプリケーションサーバー
PDF
PHP7はなぜ速いのか
PDF
anyenv + phpenv + php-build が便利すぎる件
PDF
Zend OPcacheの速さの秘密を探る
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PDF
Cake php + php unitによる実践的ユニットテスト
PDF
zval をダイエットしてみた
PPTX
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
PDF
PSGIへの誘い
PDF
Phjosh(仮)プロジェクト
PDF
WordPress on HHVM + Hack
PDF
よりよいPHPUnitの実行方法を求めて
PDF
PHPデプロイツールの世界
PDF
いまどきのPHP開発現場 -2015年秋-
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
PDF
RFC: "var" Deprecation
PDF
PHPerに覚えて欲しい日本語の重要性
PDF
PHP5.6からPHP7.0への移行
Php非同期の技法
Phpでアプリケーションサーバー
PHP7はなぜ速いのか
anyenv + phpenv + php-build が便利すぎる件
Zend OPcacheの速さの秘密を探る
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Cake php + php unitによる実践的ユニットテスト
zval をダイエットしてみた
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
PSGIへの誘い
Phjosh(仮)プロジェクト
WordPress on HHVM + Hack
よりよいPHPUnitの実行方法を求めて
PHPデプロイツールの世界
いまどきのPHP開発現場 -2015年秋-
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PHP x AWS でスケーラブルなシステムをつくろう
RFC: "var" Deprecation
PHPerに覚えて欲しい日本語の重要性
PHP5.6からPHP7.0への移行
Ad

More from Yoshio Hanawa (20)

PPTX
自宅の消費電力をリアルタイムに グラフ化してみた
PDF
Zend VMにおける例外の実装
PDF
Zend VMにおける例外の実装
PDF
ぼくのかんがえる
さいきょうの銀行振込
PDF
「OKグーグル! 銀行振込1000円」
PDF
浮動小数点数とOSSのバグの話
PDF
PHP拡張をPECLに登録してわかったこと
PDF
GitHubからお金をもらった話
PDF
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
PDF
realpathキャッシュと OPcacheの面倒すぎる関係
PDF
家庭用ブロードバンドルータ上でWordPressを動かそう
PDF
Laungage Update PHP編
PDF
GitHubにバグ報告して賞金$500を頂いた話
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PDF
PHPの正規表現と最長一致
PDF
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
PDF
浮動小数点数の話 2013年度版
PDF
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PDF
Testing PHP extension on Travis CI
PDF
PHPで時間旅行をする方法
自宅の消費電力をリアルタイムに グラフ化してみた
Zend VMにおける例外の実装
Zend VMにおける例外の実装
ぼくのかんがえる
さいきょうの銀行振込
「OKグーグル! 銀行振込1000円」
浮動小数点数とOSSのバグの話
PHP拡張をPECLに登録してわかったこと
GitHubからお金をもらった話
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
realpathキャッシュと OPcacheの面倒すぎる関係
家庭用ブロードバンドルータ上でWordPressを動かそう
Laungage Update PHP編
GitHubにバグ報告して賞金$500を頂いた話
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PHPの正規表現と最長一致
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
浮動小数点数の話 2013年度版
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Testing PHP extension on Travis CI
PHPで時間旅行をする方法
Ad

php-timecopを実戦投入してみた

Editor's Notes