PHP webhook 部署码云

有一个仓库(可以自建,也可以用线上的),将开发者本地的代码每次修改管理起来,可以查看修改记录,回滚等,常用的管理工具有svn 、git等,主流 git。

简要流程:

  1. 修改代码
  2. 提交修改到仓库

当然反过来也可以: 从仓库下载代码到本地  svn: 叫检出( svn checkout path); git 叫 拉取(git pull)

本地修改的代码要上传服务器,才能生效

composer

composer require “mk-j/php_xlsxwriter” –no-update

“require”: { “vendor/package”: “1.3.2”, // exactly 1.3.2

// >, <, >=, <= | specify upper / lower bounds
"vendor/package": ">=1.3.2", // anything above or equal to 1.3.2
"vendor/package": "<1.3.2", // anything below 1.3.2

// * | wildcard
"vendor/package": "1.3.*", // >=1.3.0 <1.4.0

// ~ | allows last digit specified to go up
"vendor/package": "~1.3.2", // >=1.3.2 <1.4.0
"vendor/package": "~1.3", // >=1.3.0 <2.0.0

// ^ | doesn't allow breaking changes (major version fixed - following semver)
"vendor/package": "^1.3.2", // >=1.3.2 <2.0.0
"vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // except if major version is 0

}

Mysql 范式 事务 锁

  1. 非标准化形式: 主键不能重复;不出现重复记录

  2. 字段原子性,不能再分

反例: 联系方式  =》(电话,邮箱)

  1. 不能存在部分依赖。 随着主键值的变化,其它列名也必须随之而变化,如果主键是几个列名的组合,其它列名(副键)必须同时被这几个列名影响,少一个的话,不行

反例:   组件id,价格,供应商id,供应商名称,供应商地址。 同一个组件有可能由不同的供应商提供,故 组件 id 和 供应商 id 组成主键, 价格 和 主键  完全依赖; 供应商名称和地址 只依赖于 供应商 id, 部分依赖

PHP 和 Nginx 通信

启动 php-fpm,通信模式, TCP socket, Unix scoket。

PHP-FPM 启动两种进程, master:监控端口、分配任务,管理 worker 进程, worker: 就是 php 的cgi 程序,解释和编译执行 php 脚本。

PHP 基础

  1. 当 $a 是以下 值时候 (boolean) $a  为假 false:
  • 未设置的变量
  • var $a;  未初始化 $a 的值
  • $a = null;
  • false
  • 0
  • ''
  • ‘0’
  • []
  1. 以上值 empty() 是均为 true 。
  2. isset() 检测 一个变量设置了,且不为 null ,所以仅仅前 3 条 为 false 。
  3. is_null() 正好与 isset() 相反, 仅仅 前 3 条 为 true 。
  4. gettype() 前3条 ,均返回 null,即 类型 未知。

相同点 都是利用回调函数对数组中每个元素进行操作。

PHP 垃圾回收机制

众所周知,php 是用 c 语言写的,所以其变量存储也依赖于 c 语言。php 的变量的内部是使用一种 zval 的数据结构来保存的。

Vi 命令一览

  • - 光标移动到上一行开头
  • +<return> 光标移动到下一行开头
  • 0 当前行开头
  • $ 当前行末尾
  • ^ 当前行第一个非空字符
  • w 下一个单词的词首 W 忽略标点
  • e 下一个单词的词尾 E …
  • b 上一个单词的词首 B …
  • ( 移动到上一个句子
  • ) 下一个句子
  • { 上一个段落
  • } 下一个段落
  • H 移动到屏幕顶部
  • M 屏幕中间
  • L 最后一行

数字组合

容器常用命令

docker image ls

无仓库名的是悬空镜像,docker image ls -f dangling=true 查看悬空镜像, docker image prune 删除悬空镜像。

该命令默认,仅仅显示顶层镜像,docker image ls -a , 可以显示中间层镜像。