Upload
hiraku-nakano
View
24.917
Download
2
Embed Size (px)
Citation preview
自己紹介
• 中野 拓 (@Hiraku)
• 口癖「composerが遅い」packagistのミラー作った https://packagist.jp
• 2015/12からメルカリで働いています。
1. パッケージ情報取得が遅い
• packagist.orgが日本から遠いことが原因
• 解決策:
• ミラーを作る (https://packagist.jp ) 本家に許可取ったので合法になった
• composer.lockをコミットしておき、composer installだけ行う
3. zipダウンロードが遅い
• github.com からzipをダウンロードする作業
• github.comが遠いのと、file_get_contentsがアホの子(コネクション毎回捨てる)
• zipごとミラーするのは大変、良い解決策がなかった
packagist遅い 依存解決 ダウンロードが遅い
composer update ミラーを参照する PHP7を使う 遅い
composer.lock+
composer install
(処理スキップ) (処理スキップ) 遅い
本体にパッチを当てるか…
• curlを使えってP-Rは何個か出てる
• https://github.com/composer/composer/issues/704
• https://github.com/composer/composer/pull/3636
• https://github.com/composer/composer/pull/2696
• 後方互換性の担保でいつも頓挫する
composer本体改善の壁
• 通信周りの謎機能が多い上、分割されていなくて再実装するしかない
• proxy, github, gitlabの認証対応
• ダウンロード進捗の表示
• ユーザー名パスワードを入力させてリトライ
• degradedMode (IPv4強制?)
• これで互換性保つのは確かに面倒くさい
インストール簡単
• composer global require hirak/prestissimo って打つと組み込まれる
• composer global remove hirak/prestissimo って打つとアンインストールできる
• 有効になってればcomposer update,
composer installなどで勝手に効力を発揮する
prestissimoとは
• composerプラグイン。globalインストールすることで以下の機能を付与する
• curl_multiでの並列zipダウンロード。並列数はカスタマイズ可能プラグイン側で先に並列ダウンロードしてキャッシュを暖める
• GitHub API制限緩和(api.github.comを極力叩かない)
• Keep-Alive有効化(HTTPSでも遅くならないよ)
• 互換性担保、速くなること以外はcomposerの動作に影響を与えない
• 「超速く演奏しろ」の意味でプレスティッシモと命名
人柱募集
• 認証の再実装部分が不安
• 使ってバグ出ししてくれ!!
• プラグインで実績積んで、安定性が認められたら本体にマージを提案する計画です
• https://github.com/hirak/prestissimo
参考文献
• http://qiita.com/ngyuki/items/03f9c6ce0f0db18ace94
• https://github.com/ngyuki/composer-curl-plugin
• https://getcomposer.org/doc/articles/plugins.md#event-handler