composer 在install的时候会做这几个事情:
- 去packagist.org中寻找对应需要的包的版本信息和下载地址
- 循环下载对应的包
- 解压安装对应的包
我们平时使用composer慢就可能在第一步和第二步出现慢。而第三步,由于php的版本或者依赖限制,也有可能安装失败。
第一步中的packagist.org保存了所有的第三方包的信息。要把这个信息文件从国外的网站拉取下来,这个本身就可能非常慢。
第二步获取了包信息之后,我们就需要把相关的包获取下来,这个时候如果包所在的地址(现在大多数包都放在github上了)访问非常慢,那么这一步就会非常慢了。
解决慢的办法有几个:
1 使用国内镜像。
- (http://pkg.phpcomposer.com/repo/packagist/)[http://pkg.phpcomposer.com]
- (http://comproxy.cn/repo/packagist)[https://phphub.org/topics/57]
- (https://toran.reimu.io/repo/packagist/)[https://toran.reimu.io/]
2 我们可以不可以自己搭建镜像呢?
可以的,这里有个开源项目(toran proxy)[https://toranproxy.com/]可以配合nginx很方便搭建属于自己的composer镜像。
自己的第三方包
还有一种需求,公司现在开发了一个第三方包,但是不希望开源到packagist.org上,只希望给自己公司内部使用。怎么办?
这个可以使用composer代理(satis)[https://github.com/composer/satis]来创建。搭建的方式也是非常简单的。其实上面说的toran proxy就是基于satis来创建的。
satis和toran的区别就是,satis只是做了代理,即将composer install的第一步做了替换,而toran则是将composer install的第一步和第二步都进行了替换。