在开发过程中,难免需要对 sql 语句的问题排查,我们可以把程序执行中运行的 sql 语句记录到日志中。
甚至,还可以记录 sql 语句的执行时间,对执行时间过长的 sql 的语句增加预警等。
Laravel 框架提供的 sql 监听事件,只需要在 Provider 的 boot 方法里增加监听回调即可。
在开发过程中,难免需要对 sql 语句的问题排查,我们可以把程序执行中运行的 sql 语句记录到日志中。
甚至,还可以记录 sql 语句的执行时间,对执行时间过长的 sql 的语句增加预警等。
Laravel 框架提供的 sql 监听事件,只需要在 Provider 的 boot 方法里增加监听回调即可。
目前,CentOS 7.9 已经算是很古老的系统了,但仍然还在很多公司中使用。安装 PHP 有编译安装,也可以使用 Yum 安装,前者较为复杂,耗时耗力,后者就很简单而且很快。但是官方的 Yum 中自带的 PHP 版本也只有很古老的 PHP 5.4 了,要想安装比较新的 PHP 8 就需要使用第三方提供的 Yum 源了。
Remi's RPM repository(简称 Remi 仓库)是由法国开发者 Remi Collet 维护的一个针对 Red Hat Enterprise Linux(RHEL)及其衍生发行版(如 CentOS、Oracle Linux 等)的第三方软件仓库。
所以,这里我就使用 Remi 源安 PHP 8.3 做一下介绍。
Casbin 是一个高效强大的开源访问控制框架,它支持 ACL、RBAC、ABAC 等多种模型。
Model,即模型,是 Casbin 的一个重要组成部分,模型的定义简单而复杂,且充满学问。Model 的作用,是对权限模型的定义,例如:acl、rbac、abac 等权限模型。
模型配置主要有五个部分:[request_definition],[policy_definition],[role_definition],[policy_effect] 和 [matchers],分别表示请求定义、策略定义、角色定义、策略效果定义、匹配器,其中 [role_definition] 角色定义是用于基于角色的模型(RBAC),支持用 # 开头表示注释。
优先级模型,所谓优先级,是指按一定的顺序加载策略。
优先级高的策略先加载,先加载的策略具有较高的优先级。
PHP-Casbin 目前支持三种模式:隐式优先顺序加载策略、显示优先顺序加载策略、基于角色和用户的层级关系加载策略。
分布式服务,是将多个具有不同或相同功能的服务分散在不同的服务器上,对外提供服务。
那么在分布式服务中,使用 PHP-Casbin 作为权限控制时,不同服务器上的服务的策略要保证是同步的。这里我们主要探讨常驻内存的 PHP 服务,在常驻内存的服务中,PHP-Casbin 一般是单例模式,所有的策略都会加载到内存,性能出色。
PHP-FPM 下每次都重新初始化
Enforcer并重新加载策略,不需要做额外的策略同步。
多租户(multi-tenancy)是一种软件架构技术,是实现在多租户的环境下共用相同的系统或程序组件,并且保证各用户间的数据隔离,也可称作域租户。
PHP-Casbin 不仅提供了全局的RBAC的权限模型,而且还支持特定域的权限模型。特定租户/域的角色意味着当用户在不同的租户/域中时,用户可以拥有不同的角色,亦拥有不同的权限策略。在大型项目中,特别是在像SaaS PaaS这种云服务中,不同的租户需要拥有独立的权限控制,这就非常有用。
这里我以一个多商户的电商平台为例,电商平台的商户就是租户,每个商户有自己的管理人员,可以分配不同的角色,定义自己的权限。这些商户间的数据在逻辑上是完全隔离的,但他们共享这个电商平台的其他资源。
PHP-Casbin 是一个非常流行的权限控制框架,支持ACL RBAC ABAC 等权限控制模型。
它使用 Matcher 中配置的表达式来做权限决策,不仅提供了非常多的内置函数,而且还可以在Matcher中指定自定义函数。
如果你的项目还有没有引入Casbin依赖,则需要安装一下:
快速安装,到底有多快?
这里以目前最新的PHP8.2为例,我的电脑尝试了一些10分钟之内搞定,如果网络好可能更快。
PPA个人软件包存档(Personal Package Archive)是一项服务,允许用户上传使用Launchpad构建和发布的Ubuntu源软件包作为apt信息库。
composer.json 记录了项目中依赖库的关系、版本信息、其他数据等。
{
"name": "phpoffice/phpspreadsheet",
"description": "Read, Create and Write Spreadsheet documents in PHP",
"keywords": ["PHP", "OpenXML", "Excel", "xlsx", "xls"],
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
}
]
}
name, 包名,包括作者名称和项目名称,以/分割;包名称可以包含任何字符,包括空格,并且不区分大小写。为了简化安装,建议定义一个不包含非字母数字字符或空格的短名称;
工欲善其事,必先利其器;器欲尽其能,必先得其法。
作为 PHP 工匠,Composer 便是 PHP 工匠们的一大利器之一,下面就介绍一下如何得其法,进而尽其能。
假设我们的项目需要用到这个库monolog/monolog日志库,首先来安装这个库:
Composer 需要 PHP 5.3.2+ 以上版本,它是跨平台的,适用于 Windows、Linux、macOS等系统。
这里的安装以 Linux 为例,Windows 下的安装相对简单,可以参考官方文档:Installation - Linux / Unix / macOS。
首先,下载安装文件
Composer 是 PHP的一个依赖管理工具。
项目开发中,难免会用到各种已有的扩展库,各个扩展库的依赖关系可能错综复杂,使用传统的require include的方式会让你困于处理各种依赖问题,而无法专注于自身的业务代码。
这一次,真正了解Composer。
Redis是一个开源,内存型,数据结构存储系统。可以用来作为数据库、缓存、消息中间件。开源就不用说了,内存型说明其速度快,数据结构存储说明它是可以数据存储。
Redis 参考:Centos下Redis的安装与配置,这里只介绍php下redis扩展的安装,Redis 的扩展在不同环境下有不同的安装方法,这里要说的是从源码的安装方式,其他方式可以参考:Redis Install。
wget http://pecl.php.net/get/redis-5.2.0.tgz
Xdebug是PHP的一个扩展,可帮助开发者进行调试和开发。
这里以源码编译安装的PHP为例,如果是yum或apt安装的php可以参考官网:Installation Xdebug。
wget https://xdebug.org/files/xdebug-2.9.2.tgz
专业企业官网建设,塑造企业形象,传递企业价值
系统软件开发,用心思考,用心设计,用心体验
打破技术瓶颈,让不堪重负的项目起死回生
构建全渠道一体化运营能力,实现全链路数字化
文案撰写、营销策划,专注品牌全案
一站式解决企业互联网营销痛点和难题
以技术的力量,改变互联网
联系我们