1. 什么是composer?
在探究如何优化composer之前,我们需要先了解composer。作为PHP的依赖管理工具,composer允许我们在项目中引入其他PHP依赖的代码库,例如Laravel框架。运行composer install 命令时,它会检查composer.json文件并下载必要的依赖项。composer大大简化了PHP开发过程,并且在开发PHP项目时广受欢迎。
2. composer安装缓慢的原因
2.1 镜像源不佳
composer默认从packagist.org下载依赖项,但在某些情况下却经常下载失败或速度缓慢。这可能是由于您的位置与packagist服务器之间的网络延迟或距离较远导致的。解决方法是安装更好的镜像源,并将其用作composer install指定的下载源。以下是一些可以替代packagist.org的镜像源:
"repositories": [
{
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
]
使用镜像源时需要注意的是,若在安装过程中发现从镜像源获取依赖文件速度缓慢,还可以使用composer命令来切换至其他可用的镜像源。
2.2 依赖文件太多
安装过程中下载的依赖文件太多也会导致安装缓慢。这个问题的解决办法是缩小composer.json文件中依赖的范围。例如,尝试安装Laravel框架的所有组件可能导致下载数千个依赖项并且耗费大量时间。为避免此类情况,您可以使用composer.json中的require-dev部分,只下载您的开发环境所需的全部组件。这可以通过独立使用composer update命令来实现,它会跳过安装所依赖的dev组件。
2.3 缓存问题
composer使用缓存以优化下载速度,但是由于网络或运营商限制,缓存可能会失效或被损坏,从而导致安装效率低下。避免此类问题的方法是清除composer缓存,并重新运行composer install指令。命令如下:
composer clear-cache
3. 如何优化composer的安装速度
3.1 安装composer的版本
第一步是确认使用的composer版本。较新的composer版本通常可以提高安装速度,因为其在下载与更新依赖文件方面执行得更快。使用以下命令安装最新版本的composer:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
3.2 更改配置项
您可以通过更改composer的配置来控制其下载依赖文件的速度, 下面列出一些不同的配置选项,让您更好地控制composer的行为。
配置并行下载
"config": {
"parallel-fetch": true
}
限制依赖版本的数量
通过限制安装的依赖版本数量来提高composer的性能。例如,该方法允许您同时下载不超过10个依赖版本,而不是同时下载许多不同版本的依赖文件。以下是命令:
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"optimize-autoloader": true,
"classmap-authoritative": true
},
"archive": {
"exclude": ["vendor"]
},
"require": {
"php": "^7.2.5"
},
"require-dev": {
"barryvdh/laravel-ide-helper": "^2.5",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.3.1",
"nunomaduro/collision": "^4.4",
"phpunit/phpunit": "^8.5"
},
"config": {
"process-timeout": 300,
"sort-packages": true,
"check-platform-reqs": true,
"fxp-asset": {
"enabled": true
},
"github-protocols": [
"https"
],
"notify-on-install": true,
"secure-http": false,
"vendor-dir": "vendor"
},
"prefer-stable": true,
"minimum-stability": "dev",
"prefer-lowest": true
3.3 选用更快的服务器
除了使用镜像源外,您还可以使用更快的服务器来加速composer。这可以通过更改composer的repositories属性来实现。例如,使用Amazon S3时,您可以像这样设置repositories选项:
"repositories": [
{
"type": "package",
"package": {
"name": "amazon/s3",
"version": "2.2.0",
"dist": {
"type": "zip",
"url": "https://github.com/aws/aws-sdk-php/archive/2.2.0.zip"
},
"autoload": {
"classmap": ["src/"]
}
}
}
]
总结:
在使用composer时,添加优化应该是一个高优先级的任务。解决缓慢下载的问题需要在探查问题的根源、选择合适的镜像源、优化设置选项,并使用更快的服务器的方面做出努力。使用这些方法,您应可以大大缩短composer安装时间并提高安装速度。