终极方案:搞定Composer安装太慢的问题

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安装太慢的问题了。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。