MySQL 创建存储过程与函数

存储过程 CREATE [DEFINER = user] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body proc_parameter [ IN | OUT | INOUT ] 参数名 参数类型 routine_body 函数体 示例 CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT) BEGIN SELECT COUNT(*) INTO cities FROM world.city WHERE CountryCode = country; END 函数 CREATE [DEFINER = user] FUNCTION sp_name ([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body func_parameter 参数名 参数类型 type 返回值累心 routine_body 函数体 示例 CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!...

三月 10, 2017

MySQL 创建用户与基本授权

创建用户 创建一个用户名为 jeffrey 并且只能 localhost 连接,通常情况下这样执行 CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password'; 完整的语句: CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ... user: (see Section 6.2.4, “Specifying Account Names”) auth_option: { IDENTIFIED BY 'auth_string' | IDENTIFIED WITH auth_plugin | IDENTIFIED WITH auth_plugin BY 'auth_string' | IDENTIFIED WITH auth_plugin AS 'auth_string' | IDENTIFIED BY PASSWORD 'auth_string' } tls_option: { SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' } resource_option: { MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count } password_option: { PASSWORD EXPIRE | PASSWORD EXPIRE DEFAULT | PASSWORD EXPIRE NEVER | PASSWORD EXPIRE INTERVAL N DAY } lock_option: { ACCOUNT LOCK | ACCOUNT UNLOCK } 对于每个帐户,CREATE USER 在 mysql....

三月 10, 2017

PHP CURL 证书问题

如出现该错误, 未正确配置 CA 证书 curl: (60) SSL certificate : unable to get local issuer certificate 下载证书 http://curl.haxx.se/ca/cacert.pem, 配置 php.ini curl.cainfo = "/usr/local/php/cacert.pem"

一月 24, 2017

PHP 缓存优化

OPcache 是 PHP 中的 Zend 扩展,可以大大提升 PHP 的性能。 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。 原理 Opcode 是一种 PHP 文件被 Zend 引擎编译后的中间语言,就像 Java 的 ByteCode,或 .NET 的 MSL,Zend 引擎在执行代码时会经过如下 4 个步骤: Scanning,re2c 进行词法分析和语法分析,将 PHP 代码转换为语言片段(Tokens) Parsing,将 Tokens 转换成简单而有意义的表达式 Compilation,将表达式编译成 Opcodes Execution,顺次执行 Opcodes,每次一条,从而实现 PHP 脚本的功能 如果你在 php.ini 中开启了 Opcache,那么每次请求来临时,Zend 引擎就不需要重复执行前面 3 步,从而大幅提升运行的性能 配置 opcache.enable 启用操作码缓存,默认为 1 开启 opcache.memory_consumption OPcache 的共享内存大小,以兆字节为单位。默认 64,可适当调大。 opcache.interned_strings_buffer 用来存储预留字符串的内存大小,以兆字节为单位。默认值为 8,建议根据服务器内存大小,设置一个大于 64 的值即可 通过字符串驻留(string interning)的技术来改善性能。例如,如果你在代码中使用了 1000 次字符串 foobar,Zend 引擎在第一次使用这个字符串时会分配一个不可变的内存区域来存储这个字符串,之后的 999 次都会直接引用这个内存区域,而不需要重复创建。...

一月 23, 2017

SWAP 交换分区

Linux 中的 SWAP(交换分区),类似于 Windows 的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存。 开启 swap ,创建用于交换分区的文件 dd if=/dev/zero of=/mnt/swap bs=1M count=2048 设置交换分区文件 mkswap /mnt/swap 立即启用交换分区文件 swapon /mnt/swap 设置开机时自启用 SWAP 分区, 需要修改文件 /etc/fstab 中的 SWAP 行, 添加 /mnt/swap swap swap defaults 0 0 修改 swpapiness 参数, 可以使用下述方法临时修改此参数, 假设我们配置为空闲内存少于 10% 时才使用 SWAP 分区 echo 10 >/proc/sys/vm/swappiness 若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容 vm.swappiness=10

一月 11, 2017