割と適当なメモ書き。
Project ICKX のあきらさんの話
普段はPHP5.3.3→PHP7.2.* へ上げる作業。ハードだった。
Flywheel2: Rapid Application Development Framework.
2010年あたりに、使いやすいやつを作った。
フローコントロール
コントローラはCakePHPみたいな感じになっている。ルータからはコントローラ名→アクション名で実装。
コントローラ
値、状態を管理して、制御実行の流れを制御
- Validation
- Action
- DisplayView, DisplayUserError, Forward, Redirect
Web,Cli問わずに、本来的に必要とされる機能を実装。(2010年当時のPHPにはなかったのよ、ホントに)
アクション
例えばポイントシステムがあった時:アクションは大きいくくり。
ルールでアクションの流れを決める。
配列で記述した設定ベースで動く感じっぽい。
source code 解説
普通のPHPがPixivになるまで
tadsanさん。
Pixiv
作品7000万、画像は14,000万以上
apache httpd を 53台でさばいている
pixiv.git
一つのリポジトリにそれぞれのサービスのサービス+ライブラリが入っている
Realworld of Pixiv の補足
- framework は使ってない: はじめから使っていないため。
- フルスクラッチはしない。コード量が多すぎるため。
歴史図
- 2012年初め synfony
- 2013年 pixiv.git
- submodule 大丈夫?
- けどまぁ意外と。。。
ふつうのPHP とは?
- apache + mod_php
- 昔からの documentoRoot にあるphp
- /member.php?id=10111... ←これ
- seoの都合で残ってる
- LAMP
- テンプレートエンジンは smarty を使っている
Apprunner
- 由来不明
- try/cache や whoops など
2018年ごろ
URLとファイルは切り離されて、連想配列で挙動を切り替える形。
クラス
- PSR0 で統一
- Classは static で使っている(去年のスライドで)
- 昔に書かれたClassが良くなかったので、一度 static クラスにして、とりなおしをしている。
PDO 問題
- 全てのクエリーは文字列に書いている…
- IN 句が素のPDOでは難しいので、PxvSqlを作っている。
- PDOラッパー
- 読み込み、書き込みを切り分けて使うことが可能
新機能はどうする?
- 実装されたブランチをリリースする時マージ
- 意図していない時にビッグバンマージが起きる
- 先にマージさせておいて、実行されないように
- 理想としてはこっち。
有効無効:IPアドレスではなく、devtoggule を作っている。
管理画面から devtoggle クッキーを設定していれば、クッキーを見て挙動を切り替える。
LT
DBのFixture を作った話