Submit Search
Upload
Composer並列化プラグイン #phpblt
•
10 likes
•
36,343 views
Hiraku Nakano
Follow
composerのzipダウンロードを並列化するプラグインを作りました。
Read less
Read more
Software
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Security Advisories Checker on Travis/Circle CI
Security Advisories Checker on Travis/Circle CI
Ryo Shibayama
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
Hiraku Nakano
ICSをビルドしてみた
ICSをビルドしてみた
kinneko
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
いまさらComposer
いまさらComposer
Mika Kane
Recommended
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Security Advisories Checker on Travis/Circle CI
Security Advisories Checker on Travis/Circle CI
Ryo Shibayama
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
Hiraku Nakano
ICSをビルドしてみた
ICSをビルドしてみた
kinneko
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
いまさらComposer
いまさらComposer
Mika Kane
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
vimプラグインでよりよい(ry
vimプラグインでよりよい(ry
soh335
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
Tokuhiro Matsuno
Symfony勉強会#9 form
Symfony勉強会#9 form
Yuichi Okada
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
HLSについて知っていることを話します
HLSについて知っていることを話します
Moriyoshi Koizumi
UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献
Yuuki Nara
Make
Make
lnial
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
Atsushi Matsuo
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編
Yohei Yasukawa
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
kumaryu
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
Composer
Composer
Shogo Kawahara
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
More Related Content
What's hot
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
Laravelを使ってみた
Laravelを使ってみた
Jaeseop Jeong
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
vimプラグインでよりよい(ry
vimプラグインでよりよい(ry
soh335
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
Tokuhiro Matsuno
Symfony勉強会#9 form
Symfony勉強会#9 form
Yuichi Okada
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
HLSについて知っていることを話します
HLSについて知っていることを話します
Moriyoshi Koizumi
UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献
Yuuki Nara
Make
Make
lnial
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
Atsushi Matsuo
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編
Yohei Yasukawa
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
kumaryu
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
What's hot
(20)
PHPデプロイツールの世界
PHPデプロイツールの世界
今日から始めるLaravel
今日から始めるLaravel
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
Laravelを使ってみた
Laravelを使ってみた
LaravelとMVCの先へ
LaravelとMVCの先へ
vimプラグインでよりよい(ry
vimプラグインでよりよい(ry
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
Symfony勉強会#9 form
Symfony勉強会#9 form
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
HLSについて知っていることを話します
HLSについて知っていることを話します
UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献
Make
Make
GitHubで見つかるFileMaker関連ソフトウェア
GitHubで見つかるFileMaker関連ソフトウェア
Real World PHP in pixiv
Real World PHP in pixiv
Rails解説セミナー: Railsのアップグレード編
Rails解説セミナー: Railsのアップグレード編
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Similar to Composer並列化プラグイン #phpblt
Composer
Composer
Shogo Kawahara
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
20150317 firefox os勉強会
20150317 firefox os勉強会
Naoki Sekiguchi
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版
VirtualTech Japan Inc./Begi.net Inc.
第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会
Masashi Eguchi
Similar to Composer並列化プラグイン #phpblt
(7)
Composer
Composer
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
20150317 firefox os勉強会
20150317 firefox os勉強会
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版
第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会
More from Hiraku Nakano
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
JSON SchemaとPHP
JSON SchemaとPHP
Hiraku Nakano
こわくない同時実行制御
こわくない同時実行制御
Hiraku Nakano
pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Xml builderの紹介
Xml builderの紹介
Hiraku Nakano
More from Hiraku Nakano
(6)
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
JSON SchemaとPHP
JSON SchemaとPHP
こわくない同時実行制御
こわくない同時実行制御
pecl-AOPの紹介
pecl-AOPの紹介
URLで遊ぼう
URLで遊ぼう
Xml builderの紹介
Xml builderの紹介
Composer並列化プラグイン #phpblt
1.
composer並列化 プラグイン @Hiraku
2.
自己紹介 • 中野 拓
(@Hiraku) • 口癖「composerが遅い」 packagistのミラー作った https://packagist.jp • 2015/12からメルカリで働いています。
3.
俺 俺
4.
使ってね!
5.
composerは どこが遅いのか?
6.
composer update で 実行される処理 1.
パッケージ情報取得 2. 依存関係の解析 3. zipダウンロード
7.
1. パッケージ情報取得が遅い • packagist.orgが日本から遠いことが原因 •
解決策: • ミラーを作る (https://packagist.jp ) 本家に許可取ったので合法になった • composer.lockをコミットしておき、 composer installだけ行う
8.
2. 依存解決が遅い • (実はそれほど遅くない) •
解決策: • PHPを速くする(PHP7、HHVMを使う) • 良いCPUを使う
9.
3. zipダウンロードが遅い • github.com
からzipをダウンロードする作業 • github.comが遠いのと、file_get_contentsが アホの子(コネクション毎回捨てる) • zipごとミラーするのは大変、良い解決策がな かった
10.
packagist遅い 依存解決 ダウンロードが 遅い composer update ミラーを参照する PHP7を使う
遅い composer.lock + composer install (処理スキップ) (処理スキップ) 遅い
11.
本体にパッチを当てるか… • curlを使えってP-Rは何個か出てる • https://github.com/composer/composer/issues/ 704 •
https://github.com/composer/composer/pull/3636 • https://github.com/composer/composer/pull/2696 • 後方互換性の担保でいつも頓挫する
12.
黒歴史
13.
composer本体改善の壁 • 通信周りの 機能が多い上、分割されていなくて再実装するしか ない •
proxy, github, gitlabの認証対応 • ダウンロード進 の表示 • ユーザー名パスワードを入力させてリトライ • degradedMode (IPv4強制?) • これで互換性保つのは確かに面倒くさい
14.
と思ってたらこんな話が
15.
composerプラグインで curl化できるらしい…
16.
プラグインなら本体に マージされなくても 試してもらえる 実績も積める
17.
どうせなら 並列ダウンロードも できるんじゃね?
18.
(できた)
19.
hirak/prestissimo
20.
21.
インストール簡単 • composer global
require hirak/prestissimo って打つと組み込まれる • composer global remove hirak/prestissimo って打つとアンインストールできる • 有効になってればcomposer update, composer installなどで勝手に効力を発揮する
22.
prestissimoとは • composerプラグイン。globalインストールすることで以下の機能を付与する • curl_multiでの並列zipダウンロード。並列数はカスタマイズ可能 プラグイン側で先に並列ダウンロードしてキャッシュを暖める •
GitHub API制限緩和(api.github.comを極力叩かない) • Keep-Alive有効化(HTTPSでも遅くならないよ) • 互換性担保、速くなること以外はcomposerの動作に影響を与えない • 「超速く演奏しろ」の意味でプレスティッシモと命名
23.
デモ
24.
人柱募集 • 認証の再実装部分が不安 • 使ってバグ出ししてくれ!! •
プラグインで実績積んで、安定性が認められ たら本体にマージを提案する計画です • https://github.com/hirak/prestissimo
25.
参考文献 • http://qiita.com/ngyuki/items/ 03f9c6ce0f0db18ace94 • https://github.com/ngyuki/composer-curl- plugin •
https://getcomposer.org/doc/articles/ plugins.md#event-handler
Download now