Phpmatsuri2013

17
Composer Proxy JP [email protected] c09 @ooharabucyou PHPMATSURI 2013 in Sapporo, 2013-07-15

Transcript of Phpmatsuri2013

Composer Proxy JP

[email protected]

@ooharabucyou

PHPMATSURI 2013in Sapporo, 2013-07-15

Dependency Manager for PHP

npm

Central Repository

Awsome

Problem

● meh... Slow... Slow... Slow...

● There are 300 - 500ms latencies to packagist.org from Japan.

[kawahara@udon ~ master] $ composer update --devUpdating dependencies (including require-dev)

10:00 a.m.

[kawahara@udon ~ master] $ composer update --devUpdating dependencies (including require-dev)

10:02 a.m.

[kawahara@udon ~ master] $ composer update --devUpdating dependencies (including require-dev)

10:03 a.m.

[kawahara@udon ~ master] $ composer update --devUpdating dependencies (including require-dev)

......

Your requirements could not be resolved to an installable set of packages.

10:05 a.m.

Mecanisum of Composer

1. Gets /packagis.json from repository ○ Ok. It's very fast. Only 1KB.

2. Gets providers information from repository○ Gets 4 files.

3. Gets package information○ In case of Symfony Standard○ 72 files, 7.7MB○ (If there is file cache in local,

composer fetch data from here.)4. Resolve Dependencies5. Gets Package (Archive or Source)

Some ways to resolve it

● Use private repository○ satis (composer/satis を活用してComposer パッ

ケージの配布を行う http://www.bucyou.net/blog/952)○ Broker (https://github.com/researchgate/broker)

● Satis is good solution, but we need install required package in advance.

● Make mirror in Japan.

My Answer

● Better Proxy in Japan

Application

● Name: composer-proxy● Very Very simple Silex application.● Features

○ proxy and cache.

● composer-proxy.jp in Sakura-Cloud.

How to use?

● Edit your composer global configuration. (default $HOME/.composer/config.json)

{ "repositories": [ { "packagist": false }, { "type": "composer", "url": "http://composer-proxy.jp/proxy/packagist" } ]}

Speed

● resolve dependencies of symfony/console● direct to packagist.org

○ 120.24 secouns● composer-proxy.jp (cached)

○ 41.35 seconds

● 3x faster!!!

● Need more cache information in Japan!! Please use!!

In furture

● Support notice (for download count) by asyncronous message queue.

● Support search● Distribution archive cache● Add own packages

OMAKE

● vagrant-packagist (https://github.com/kawahara/vagrant-packagist)○ You can setup own packagist!○ 本当は packagist 改造しようと思ったけど、やめた残

骸。PHPer には不慣れな、solr の <del>設定もやってくれるぞ!! </del>インストールもやってくれるぞ。

About Me

● c09● Access! http://composer-proxy.jp/● Ooharabucyou (Shogo Kawahara)● Web API Developer, Rakuten, Inc. (http:

//webservice.rakuten.co.jp● #groovy #java #php #edogawa-ku #openpne