composer 加速扩展包—— hirak/prestissimo

在用composer过程中会经常出现安装慢的情况。项目依赖的扩展包过多时,耗时很长,影响部署和开发。

1.是因为网络镜像问题,可以通过设置镜像源解决 https://www.yangliuan.cn/?p=172

2.因为 Composer 是单进程方式下载的, Composer 安装完一个依赖,才回去下载并安装另一个依赖

解决方案使用composer 扩展包 prestissimo

项目地址:https://github.com/hirak/prestissimo

 安装  建议采用全局安装
composer global require hirak/prestissimo

卸载

composer global remove hirak/prestissimo

基准测试 案例

$ composer create-project laravel/laravel laravel1 --no-progress --profile --prefer-dist

288s -> 26s

配置

支持composer 配置项 无需任何特殊配置 composer配置

Composer 配置镜像源

现代php开发都基于composer,由于”墙”的存在,影响了安装或更新扩展包的时候用。因此使用composer时需要配置一下国内镜像

配置镜像

全局方式

composer config -g repo.packagist composer 镜像url

该指令会修改composer 全局配置文件中的镜像url

如图 repositories 配置中 packagist url项

配置当前项目

composer config repo.packagist composer 镜像URL

该指令会在当前项目的composer.json中修改镜像url

国内镜像

镜像名地址赞助商更新频率备注
阿里云 Composer 镜像https://mirrors.aliyun.com/composer/阿里云96 秒推荐
腾讯云 Composer 镜像https://mirrors.cloud.tencent.com/composer/腾讯云24 小时
PHP 国内 Composer 镜像https://packagist.phpcomposer.com仁润股份24 小时不稳定
华为云 Composer 镜像https://repo.huaweicloud.com/repository/php/
https://mirrors.huaweicloud.com/repository/php/
华为云未知未知

如果使用ubuntu和linux开发可以用shell写个切换镜像脚本 composer.sh

Ubuntu 配置环境变量

参考资料 https://www.jianshu.com/p/12fbfa8c7489

以composer 为例

本文修改的是/etc/profile 环境变量,其它环境变量请看参考文章

执行sudo vim /etc/profile

以composer为例,文件在最后一行添加export PATH =”/home/grace/.config/composer/vendor/bin” 如图所示,多个目录用英文冒号分割: .

保存之后重启即可

其它方式生效 source /etc/profile ,会在当前终端生效

后来经过测试,执行source后不需要重启服务器。退出当前会话重新登录即可。如果是图形界面登出桌面,重新登录。如果是终端exit或关闭 ,重新使用ssh登录即可

ubuntu root用户找不到环境变量解决方案

编辑 /root/.bashrc 文件,文件末尾添加 source /etc/profile 保存 执行更新:source /root/.bashrc 或者重启

laravel-cors 扩展包

跨域资源共享 参考 https://www.yangliuan.cn/?p=141

公司采用前后端分类的开发方式,每次部署项目都需要设置nginx配置或添加php header响应非常麻烦,于是在github找了一个用于设置cors跨域的扩展包,很好用。写下来备忘。

github地址https://github.com/barryvdh/laravel-cors

1.composer require barryvdh/laravel-cors

 在laravel项目执行安装,如果使用的是laravel 5.5以下版本 请在config/app.php中的providers 数组中添加 Barryvdh\Cors\ServiceProvider::class,注册该服务提供者

2.php artisan vendor:publish –provider=”Barryvdh\Cors\ServiceProvider”

 执行发布配置文件,该命令会在config目录下生成配置文件

3.根据你的需求讲扩展包中的 \Barryvdh\Cors\HandleCors::class,  中间件添加到 全局中间件 ,中间组,路由中间件中。

如图所示添加到api路由组中间件中

4.根据需求修改配置文件,设置允许的请求来源,请求头 和请求方

 特别注意,该扩展包会在浏览器使用ajax请求时,根据配置自动添加响应头,非ajax请求并不会添加响应头.

  使用不允许的请求源或请求头和方法是会返回403

补充

该扩展包在异常响应时不会响应设置的跨域请求头,尤其是在结合框架自带的表单验证响应422时,会造成跨域

建议使用php原生header写法

laravel 7以后 官方已经集成了该扩展包