1. 前言
在开发过程中,我们经常需要使用到Composer来管理PHP依赖库。但是,由于网络、服务器等原因,Composer在安装依赖库时可能会非常慢,甚至无法正常安装。不过,不用担心,本文将带你了解几种解决方案,让你成功摆脱Composer安装太慢的问题。
2. 方案一:更换镜像源
Composer安装依赖库时,默认情况下会从官方镜像源下载依赖库,但是由于网络环境问题,可能会导致下载速度非常慢甚至无法下载。这时我们可以使用国内的镜像源,比如阿里云镜像源。
2.1 配置阿里云镜像源
打开命令行终端,输入下面的命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
执行完毕后,Composer配置文件里就会添加阿里云镜像源地址,Composer在运行时会自动从阿里云镜像源下载依赖库,速度会有明显的提升。
2.2 配置其他镜像源
如果阿里云镜像源依然比较慢,可以使用其他的镜像源。下面列出一些常用的国内镜像源:
PHP中国镜像源:https://php.cnpkg.org/
清华大学镜像源:https://packagist.mirrors.sjtug.sjtu.edu.cn/
腾讯云镜像源:https://mirrors.cloud.tencent.com/composer/
在命令行终端输入下面的命令来配置镜像源:
composer config -g repo.packagist 镜像源地址
其中,镜像源地址是要替换成你所选择的镜像源的地址。
3. 方案二:设置Composer并发数
Composer在下载依赖库时,可以设置并发数。并发数默认是6,也就是说同时只能执行6个下载任务。如果服务器带宽允许的情况下,可以考虑将并发数调整到更大的值。
3.1 修改环境变量
在命令行终端中执行下面的命令可以修改Composer的并发数:
export COMPOSER_PROCESS_TIMEOUT=600
其中,600是设置的并发数,可以根据实际情况进行调整。
在Windows命令提示符下,可以使用下面的命令:
set COMPOSER_PROCESS_TIMEOUT=600
3.2 在composer.json中设置
在composer.json文件中添加下面的配置,也可以自定义Composer的并发数:
{
"config": {
"process-timeout": 1800,
"parallel-install": true,
"prefer-dist": true,
"optimize-autoloader": true
}
}
其中,process-timeout字段是设置并发数的。值越大,表示可以同时下载的依赖库也就越多。
4. 方案三:安装缓存机制
Composer在下载和安装依赖库时会使用缓存机制,如果安装了缓存机制可以避免重复下载已经下载过的依赖库,加快了安装依赖库的速度。
4.1 安装Satis
Satis是一个基于Composer的工具,它可以将多个依赖库打包到一个本地的缓存仓库中,然后在项目安装依赖库时使用这个本地缓存仓库。
4.1.1 全局安装Satis
在命令行终端中输入下面的命令进行Satis的全局安装:
composer global require composer/satis
安装完毕后,在命令行终端中输入下面的命令进行测试:
satis --version
返回版本号,则说明Satis已经安装成功。
4.1.2 创建配置文件
在项目根目录下创建一个配置文件satis.json,用于配置Satis。
在命令行终端中输入下面的命令,创建配置文件:
satis init
执行完毕后,项目根目录下就会生成一个satis.json配置文件。
4.1.3 配置satis.json文件
配置satis.json文件,将需要使用的依赖库路径添加到repositories字段中。
{
"name": "My Repository",
"homepage": "https://example.com",
"repositories": [
{ "type": "composer", "url": "https://packages.example.com" },
{ "type": "vcs", "url": "https://github.com/example/repository" }
],
"require-all": true,
"output-dir": "build/",
"archive": {
"directory": "dist/",
"format": "tar",
"skip-dev": true
}
}
其中,repositories字段是需要使用的依赖库的路径数组。
4.1.4 生成缓存文件
在命令行终端中输入下面的命令,可以生成缓存文件:
satis build satis.json ./
执行完毕后,Satis就会将配置文件中指定的依赖库打包到本地的缓存仓库中,便于项目安装依赖库时使用。
4.2 安装Packagist镜像
Packagist是Composer默认的全球性Composer包存放库,而且也可以搭建在本地网络中,为公司内部开发提供一个私有的Composer包存储库,使用时可以自行将Composer配置文件中的URL替换为自己搭建的URL链接。
4.2.1 安装Toran Proxy
Toran Proxy是一个基于Composer的工具,它可以在本地网络中搭建一个Packagist镜像源,用于公司内部开发使用。
在命令行终端中输入下面的命令就可以安装Toran Proxy:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
git clone https://github.com/toranproxy/toran-proxy.git
cd toran-proxy
git checkout tags/{ version} -b release
composer install --no-dev --prefer-dist --no-autoloader --no-scripts
composer dump-autoload --no-dev --optimize
cp app/config/parameters.yml.dist app/config/parameters.yml
其中,version是你所需要安装的版本号。
4.2.2 配置Toran Proxy
进入Toran Proxy所在目录,修改app/config/parameters.yml文件,添加如下内容:
# 代理模式:gitlab
mode: gitlab
# 自定义扩展包路径
repositories:
- {url: "https://github.com/top-think/framework.git", "type": "vcs"}
vendors_directory: %(web_root)s/private/toran-proxy/vendors/
web_root: /opt/toran
其中,repositories字段是需要使用的依赖库的路径数组。vendors_directory字段是依赖库下载缓存的存放路径。web_root字段是访问Toran Proxy的URL路径。
4.2.3 后台运行Toran Proxy
运行下面的命令,可以让Toran Proxy在后台运行:
nohup php console server:run &
此时可以在浏览器中输入http://ip地址:31234来访问Toran Proxy。
5. 总结
Composer的能力是非常强大的,它可以极大地提高我们的开发效率。在使用Composer时,由于网络和服务器等原因,可能会出现安装依赖库太慢的问题。针对这个问题,本文介绍了三种解决方案,包括更换镜像源、设置Composer并发数和安装缓存机制等。相信通过本文,你已经可以轻松地解决Composer安装太慢的问题了。