swoole服务定时监控、重启脚本

#!/usr/bin/bash
count=`ps -ef|grep “swoole进程” | grep -v “grep” | grep “master” | wc -l`
echo $count

if [ $count -lt 1 ]; then
ps -eaf |grep “swoole进程” | grep -v “grep”| awk ‘{print $2}’|xargs kill -9
sleep 2
ulimit -c unlimited
/usr/bin/php /你的swoole服务脚本路径/xxx.php start -d -h 127.0.0.1 -p 8901
echo “restart”;
echo $(date +%Y-%m-%d_%H:%M:%S) >/data/log/restart.log
fi

 

 

添加到定时任务(crontab)

*/1 * * * * /脚本路径/swoole_server.sh > /dev/null 2>&1 &

PHP底层学习-源码整体框架 3 PHP源码目录结构

# PHP源码目录
## SAPI目录
### 对输入和输出层的抽象,是PHP提供对外服务的规范
## Zend目录
### 内存管理模块
### 垃圾回收
### 数组实现
## main目录
### 解析SAPI的请求,分析要执行的脚本文件和参数
### 调用Zend引擎之前,完成必要的初始化工作
## ext目录
### PHP扩展相关的目录
## TSRM目录
### 线程安全资源管理器
### PHP的线程安全机制
* 在线程环境下,为每个线程提供独立的全局变量副本
* 具体实施是

通过TSRM为每个线程分配(分配前加锁)一个独立ID(自增)作为当前线程的全局变量内存区索引。

在以后的全局变量访问中,实现线程之间的完成独立

PHP底层学习–源码整体框架 2 PHP7内核架构

分为4部分:

1、Zend引擎(提供基础服务)

词法/语法分析、AST编译和opcodes的执行

变量的设计、内存管理、进程管理等都在Zend引擎实现

2、PHP 层(应用层)

处理来自外部的交互

3、SAPI

Server API。定义PHP输入/输出规范。

4、扩展部分

Zend引擎提供了核心能力和接口规范。在此基础上进行扩展开发。

PHP底层学习-源码整体框架 1 PHP执行流程

1、词法分析将PHP代码转换为有意义的标识Token。该步骤的词法分析器使用Re2c实现。

2、语法分析将Token和符合文法规则的代码生成抽象语法树。语法分析器基于Bison实现。语法分析使用了BNF来表达文法规则,Bison借助状态机、状态转移表和压栈、出栈等一系列操作,生成抽象语法树。

3、上步的抽象语法树生成对应的opcode,并被虚拟机执行。opcode是PHP7定义的一组指令标识,指令对应着相应的handler(处理函数)。当虚拟机调用opcode,会找到opcode背后的处理函数,执行真正的处理。

linux编译安装mysql5.6.20

cmake编译安装mysql的方法:
#useradd -M mysql -s /sbin/nologin
#yum install -y cmake
#tar zxvf mysql-5.6.35.tar.gz
#cd mysql-5.6.35

创建数据存放目录
#mkdir /data/mysql

创建用户及用户组并指定之上的目录,用户及用户组
#useradd -M mysql -s /sbin/nologin
#chown -R mysql.mysql /data/mysql

预编译
#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_DATADIR=/data/mysql\
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DENABLED_LOCAL_INFILE=1\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DEXTRA_CHARSETS=all\
-DMYSQL_TCP_PORT=3306\
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock\
-DWITH_DEBUG=0

编译安装
#make && make install

编译出错,删除下面文件,重新编译安装。
#rm -f CMakeCache.txt
#make && make install

拷备配置文件及启动文件到指定目录下
#cp support-files/my-medium.cnf /etc/my.cnf
#cp support-files/mysql.server /etc/init.d/mysqld

修改配置文件my.cnf
加入basedir=/usr/local/mysql
修改启动脚本mysqld
加入或修改
basedir=/usr/local/mysql
datadir=/data/mysql
#chmod 755 /usr/local/mysql/scripts/mysql_install_db
#chown -R mysql.mysql /usr/local/mysql/

初始化权限
#/usr/local/mysql/scripts/mysql_install_db
–user=mysql –basedir=/usr/local/mysql/ –datadir=/data/mysql/

将mysql服务命令目录加入path环境变量中。
#echo “export PATH=$PATH:/usr/local/mysql/bin” >>/etc/profile
#source /etc/profile

修改mysql用户登录密码
#/usr/local/mysql/bin/mysqladmin -uroot password 123456
#/usr/local/mysql/bin/mysql -uroot -p123456