测试用 Octane 加速 Laravel10,并发达到4倍左右,同时对比Hyperf3压力测试
Laravel
开发爽,但性能完全无法忍受。刚完成一个项目,有点时间,试试看用 octane
加持后是否能摆脱 Laravel
的性能魔咒。Laravel
应用基本可可无缝迁移到 Hyperf
,因此同时测试 Hyperf
,看看 Swoole
协程异步加持的 Hyperf
是不是比 Laravel
快很多。
测试环境
1 | 服务器: 阿里轻量云服务器 |
测试用 Octane 加速 Laravel10,并发达到4倍左右,同时对比Hyperf3压力测试
Laravel
开发爽,但性能完全无法忍受。刚完成一个项目,有点时间,试试看用 octane
加持后是否能摆脱 Laravel
的性能魔咒。Laravel
应用基本可可无缝迁移到 Hyperf
,因此同时测试 Hyperf
,看看 Swoole
协程异步加持的 Hyperf
是不是比 Laravel
快很多。
1 | 服务器: 阿里轻量云服务器 |
在 public
方法上加入 @Test
文档标记,该行代码左侧就会出现一个绿色三角形,点击该三角形就能运行该方法。
打开 ~/.gradle/gradle.properties
,加入设置:
1 | systemProp.socks.proxyHost=127.0.0.1 |
注意,
Android Studio
的设置Appearance & Behavior > System Settings > Http Proxy
设置的代理服务器并不是gradle
用的代理。gradle
代理配置在~/.gradle/gradle.properties
文件中,也可以是项目根目录下的gradle.properties
中。gradle
必须使用,并且必须正确配置代理,否则一些包没法安装。
在类例加入 main
方法,Android Studio 默认是不能执行的,会报错。需要改配置才行。
打开 .idea/gradle.xml
,在 GradleProjectSettings
标签下加入 <option name="delegatedBuild" value="false" />
Laravel Eloquent 日期系列化成 json,默认系列化格式为:2023-03-08T08:16:02.000000Z
。
原因是 Laravel 模型基类的 serializeDate()
时间系列化方法调用 Carbon\Traits\Converter::toJSON()
方法,返回的是 ISO-8601
格式的日期。
引起问题的代码如下:
1 | // Illuminate\Database\Eloquent\Concerns\HasAttributes |
Laravel 中使用 Intervention 缩放图片/生成缩略图
Laravel
中使用 Intervention
库缩放图片的时候,没必要用专供的接口,用通用不需要任何配置,还更简单,直接调用就可以。
Intervention
包composer require intervention/image
brew 无法执行命令,总出现 Downloading https://.../api/formula.json
每次 brew
命令都出现 Downloading https://formulae.brew.sh/api/formula.json
,而且特别慢,总是超时,翻墙了也不管用…brew
源已经设为阿里云的了,还出现这东西。原因是 brew 4
默认从 HOMEBREW_API_DOMAIN
安装应,每次都下载 formula.json
。
有两个方式能解决这个问题。
方式1:把 HOMEBREW_API_DOMAIN
设置到国内源,这样每次虽然都会下载 formula.json
,但是就几秒的事。
1 | echo 'export HOMEBREW_API_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles/api' >> ~/.bash_profile |
方式2:禁止从 API 安装应用,不会每次执行命令就跑出这东西,但要手动升级应用。
把 export HOMEBREW_NO_INSTALL_FROM_API=1
加入 ~/.bash_profile
1 | echo 'export HOMEBREW_NO_INSTALL_FROM_API=1' >> ~/.bash_profile |
以前用 window 系统的时候,经常去 php 官网下载不同版本的 php
来使用,改一下系统 path 就可以更换默认 php 版本,其它版本用完整路径也可以使用。Mac 上就更省事一点,用 brew
命令就可以安装不同版本的 php,再用 brew-php-switcher
切换默认 php 版本,而且用 pecl
命令就可以安装 pecl 扩展。
php
安装包版本1 | brew search php |
执行命令后,你会看到不同版本的 php
, 最新版的是不带版本号直接是 php
,旧版本带版本号,如:php@8.1
、php@7.4
。
php
1 | brew install php #不带版本号是最新版 |
php
版本原 brew
源极慢,有必要把 Homebrew
源改为成国内源。
Homebrew 源主要有四个部分组成:
名称 | 说明 |
---|---|
brew | Homebrew 源代码仓库 |
homebrew-core | Homebrew 核心软件仓库 |
homebrew-bottles | Homebrew 预编译二进制软件包 |
homebrew-cask | 提供 macOS 应用和大型二进制文件 |
如果还没安装 homebrew,则需要先安装。
用官网推荐安装方式:
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
如果安装很慢,可使用清华源安装
1 | git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install |
1 | $ cd "$(brew --repo)" && git remote -v |
使用 Dexie.js 简化访问浏览器本地数据库 IndexedDB
localStorage
本地存储各家浏览器分别限制在 2.5M ~ 10M 之间,本地浏览器需要存储较大数据的时候就不能用了, IndexedDB
就能解决这个问题。
IndexedDB 是存储结构类似 MangoDB 的对象存储数据库,不是关系型数据库。 IndexedDB API 稍微有点麻烦,用 Dexie.js
可简化操作。