PHP[日常] 20一7年十一月工作总括

=========================================================================

2017年3月31日
记录:

 

nginx的载重均衡:

weight=3的情致是每多少个请求,有一个去了1捌7服务器

upstream mail.sina.net {

    server xxxxxxxxxxweight=3;

    serverxxxxxxxxxx

}

server {

   listen       80;

   server_name mail.sina.net;

   location / {

        proxy_pass http://mail.sina.net;

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;

        proxy_set_header   X-Forwarded-For
 $proxy_add_x_forwarded_for;

   }

}

tcp的一次握手

SYN  Seq=0

SYN ACK Seq=0;Ack=1

ACK Seq=1;Ack=1

 

xxxxxxxxxxxxx器未有上

 

=========================================================================

2017年3月30日
记录:

 

xxxxxxxxx列取邮件时:

笔者的日志中的邮件状态,应该是已读的,和原先已发送邮件夹1样

xxxxxxxxxx

企邮登陆接口:

日增四个新字段realname,office

 

//验证通过的依据登6时邮箱,取出暗中认可二级域的邮箱

xxxxxxxxxx

php的_set()和_get的用处,当直接调用$obj->name那个脾气假设不存在就会调用_get()方法

select * from enterprise where id =23684

 

=========================================================================

2017年3月29日
记录:

 

memcached:

1.当分红给memcached内部存款和储蓄器空间用完以往,会利用LRU(Least Recently Used,近期起码使用)策略加上到期失效策略,失效数据首先被替换,然后再交替掉近年来未利用的数目。

2.封存的数目像一张高大的HASH表,该表以Key-value对的不贰诀窍存在内部存款和储蓄器中

三.”分布式缓存”,可是MemCache本人完全不负有分布式的职能

余数Hash,一致性hash

hashcode能够应用那种措施伪达成crc3二(“test”);printf(“%u\n”,$str);

 

日前登录cookie和session:

 

webmail登陆处理:

xxxxxxx

客户端登陆处理:

xxxxxxxxxxxx

made up of 由…组成 What is it Made Up Of?

 

=========================================================================

2017年3月28日
记录:

 

当下赢得ip是选取的http头,因为负载均衡的来头:

$ip = isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]) ?
$_SERVER[‘HTTP_X_FORWARDED_FOR’] : ”;

if (!$ip) {

    $ip = isset($_SERVER[‘REMOTE_ADDR’]) ?
$_SERVER[‘REMOTE_ADDR’] : ”;

}

nginx php-fpm的不当日志:

vim /etc/php-fpm.d/www.conf

catch_workers_output = yes

位置:/var/log/php-fpm/www-error.log

 

 

铲除钦定mc的点子,假使有用户投诉被锁定:

例如:

/usr/local/bin/memdump –servers=xxxxxxxxxxxxxx|grep shihan

printf “get sxxxxxxxxx\r\n” | nc xxxxxxxxxxx 50xxxx

printf “delete sxxxxxxxxx\r\n” | nc xxxxxxxxxxxx 5xxxxxx8

 

pow() 函数重回 x 的
y 次方。

 

=========================================================================

2017年3月27日
记录:

 

一向利用root用户执行mysqld不被帮忙,能够如此mysqld –user=mysql&

一个服务器开启三个mysql服务:

壹.创办数量目录 mkdir /var/lib/mysql贰

2.改属组 chown mysql:mysql /var/lib/mysql2

3.开头化数据库 mysql_install_db –user=mysql
–datadir=/var/lib/mysql2/ 报命令过期了,没影响

4.配置:

[mysqld_multi]

user       = root

[mysqld1]

port            = 3306

socket          = /tmp/mysql.sock

datadir         =c

pid-file        =/var/lib/mysql/mysql.pid

user            =mysql

log-bin         =master-bin

log-bin-index   =master-bin.index

server-id       =1

[mysqld2]

port            = 3307

socket          =/tmp/mysql2.sock

datadir         =/var/lib/mysql2

pid-file        =/var/lib/mysql2/mysql.pid

user            =mysql

5.启动 mysqld_multi start 2  ////  mysqld_multi
start 1

另①种运维格局:mysqld –port=3307
–socket=/tmp/mysql2.sock –datadir=/var/lib/mysql二–pid-file=/var/lib/mysql2/mysql.pid –user=mysql  –skip-grant-tables
跳过表明密码

mysql伍.7改动密码:update mysql.user set
authentication_string=password(‘taoshihan1′) where user=’root’ and Host
= ‘localhost’;flush privileges;

陆.登六管制:mysql –user=root –port=3307
–socket=/tmp/mysql二.sock -p

 

壹.用户登陆失利,记录到mc以下数据

键:当前ip,值:次数,过期光阴:一分钟

键:用户名+企业id,值:次数,过期时间:壹分钟

 

2.1秒钟以内当先14遍后,就会堵住他证实

在数据库,在文件,在mc中,键:用户名+集团id login 值:一,过期日子:1天

三.等一分钟mc失效以后,该用户继续尝试,任然登陆退步,重复步骤一

超过10次以后,

key:sxxxxxxxxxx

key:shihxxxxxxxxxxxe

=========================================================================

2017年3月24日
记录:

 

MX配置变更为MX:   xxxxxxxxxxx5端口,企邮本域邮件能够投递到收件夹。

测试wxxxxxxxxxxxxrt设置

[yifeng@vm-228-192 ~]$ cat /etc/postfix/transport

*       sxxxxxxxxxxxxxx

测试mda的环境

 

设置新版MySQL5.7

1.[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/

enabled=1

gpgcheck=0

 

2.错误:[ERROR] InnoDB: The Auto-extending
innodb_system data file ‘./ibdata1’ is of a different size 640 pages
(rounded down to MB) than specified in the .cnf file: initial 768 pages,
max 0 (relevant if non-zero) pages!

解:/etc/my.cnf file inside
[mysqld] block.

innodb_data_file_path = ibdata1:10M:autoextend

3.错误:Fatal error: mysql.user table is damaged.
Please run mysql_upgrade.

解:删掉/var/lib/mysql/下的文书

4.找root密码:grep ‘temporary password’
/var/log/mysqld.log

伍.改动密码:Your password does not satisfy the current
policy requirements

set global validate_password_policy=0;

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘taoshihan1’;

  1. 开启general log SET GLOBAL general_log =
    ‘ON’;

暗中认可是在data目录上面

 

cluster [ˈklʌstɚ]群

 

=========================================================================

2017年3月23日
记录:

 

测试mda环境:

一. 改动配置: xxxxxxxxxxx贰. 测试结果:

         一. 常规发送邮件, 收件夹到手不到邮件.  

         贰. 好端端发送邮件, 保存已发送时, 第三种艺术直接调用mda的Lmtp服务, 已发送邮件夹能够赢得到邮件 .

        第三种格局,  收件人配置xxxxxxxxxxxn域,
调用sendmail命令, 已发送邮件夹到手不到邮件

整理mic,mda,mc,数据库,资源

xxxxxxxxxxxxxx47

 

=========================================================================

2017年3月22日
记录:

 

问候语:

xxxxxxxxxxxting.php

 

PHP CLI格局下的多进度应用:

yum install php71w-process php71w-pear

posix_getpid() 再次来到当前历程的id

pcntl_fork() fork三个子历程

#!/bin/env php

<?php

$pid=posix_getpid();

$user=posix_getlogin();

echo “当前经过的id:{$pid}\n”;

//$input=readline();

$son=pcntl_fork();

//上面包车型客车逻辑,当前历程和fork出来的子进度都会进行

if($son){

        $curPid=posix_getpid();

        echo “当前父进度的id:{$curPid}\n”;

        //父进度逻辑

        sleep(20);

}else{

        //子进程逻辑

        $curPid=posix_getpid();

        echo “当前子进度的id:{$curPid}\n”;

        sleep(20);

}

供销合作社电视发表录拼接用户域:

xxxxxxxxxx

=========================================================================

2017年3月21日
记录:

java的输入输出io操作:

两个第贰的类,InputStream,OutputStream,Reader,Writer,File

输入输出流,一.先进先出,二.顺序存取

缓冲流,即为3个流配备多少个缓冲区(Buffer),1个缓冲区正是专程用于传送数据的一块内部存款和储蓄器。

  1. 2进制数据壹律使用字节输入、输出流处理。

  2. 对此字符文本类型的数量一律使用字符输入、输出流处理。

 

Reader上边包车型大巴Buffered里德r和FileReader最常用,FileReader的read()方法重返的是2个字符的16进制

FileReader fr=new FileReader(“test.txt”);

int ch=0;

while((ch=fr.read())!=-1){

        System.out.println((char)ch);

}

按行读取:

FileReader fr=new FileReader(“test.txt”);

BufferedReader br=new BufferedReader(fr);

String ch=””;

while((ch=br.readLine())!=null){

        System.out.println(ch);

}

                

ReaderTest.java:1: error: class A is public, should be declared in a
file named

当1个类应用public修饰时,应该和文件名相同

 

architecture [ˈɑ:rkɪtektʃə(r)]结构 reference[ˈrɛfərəns]参考

functionality [ˌfʌŋkʃəˈnælɪti]功能 distribute 分配

=========================================================================

2017年3月20日
记录:

 

添加nginx的仓库:

/etc/yum.repos.d/nginx.repo

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/6/$basearch/

gpgcheck=0

 

Hyphen-minus 减号 synopsis [sɪˈnɑ:psɪs] 大纲 invocation 乞求

separate [‘sepəreɪt]分离 measurement 量度

interpret 解释 ERE 在..以前 POSIX 可移植性操作系统接口

 

=========================================================================

2017年3月17日
记录:

 

API(Application Programming Interface, 应用程序编制程序接口)是三个通用概念

java类的查找路径:

据他们说环境变量中classpath的值

Vector:向量 动态数组,向量不可能存放不难数据类型,只好用来存放在对象

 

数组和向量都足以储存对象,但目的的仓库储存地方是不管3柒二拾一的,查找对象时,顺序比较,功用非常的低.对

象的囤积地点和目的的重中之重性格(设为
k)之间创建一个特定的附和关系(设为
f),在追寻时,只要依照待核查象的要紧性情k 总括f(k)的值即可,f 为哈希(hash)方法,依据那种思想建立的表为哈希表。

 

解决:uses unchecked or unsafe
operations.

众目昭彰写上泛型,例如:Hashtable<String,String> hs=new
Hashtable<String,String>();

 

gradle的java项目

gradle init –type java-application

./gradlew build

./gradlew tasks

./gradlew run

 

discuz:

uc_server/avatar.php,linux头像不显得问题,目录全转小写了strtolower

 

=========================================================================

2017年3月16日
记录:

 

查阅打卡内容邮件:

xxxxxxxxxxxx

Linux系统日志及日志分析:

日记优先级:emerg,alert,crit,err,warning,notice,info,debug,none

/var/log/boot.log 开启或重启日志

/var/log/messages 该日志文件是多多益善历程日志文件的汇总

日记类型:

auth用户认证时;authpriv与auth类似,但是只好被一定用户查看;local0.local7由自定义程序接纳

kern系统基本音讯;user用户进度

选择器:

日志类型.日志优先级

logger 命令:直接往系统日志中写日记

 

open-resty

 

php扩展开发:

壹.生成代码

cd php_src/ext/

./ext_skel –extname=say

二.改动config.m四配置文件

去掉dnl注释

PHP_ARG_ENABLE(say, whether to enable say support,

Make sure that the comment is aligned:

[  –enable-say           Enable say support])

3.修改say.c文件

PHP_FUNCTION(say)

PHP_FE(say, NULL)

4.编译

phpize 需要先yum install php71w-devel  apt-get install
php-dev

./configure 需要先yum install gcc

make 生成的扩充地点是/root/softs/php-7.一.2/ext/say/modules/say.so

 

5.

配置/etc/php.d/say.ini

[say]

extension = say.so

把say.so转义到原先yum安装的php扩大所在的任务:/usr/lib64/php/modules/

 

=========================================================================

2017年3月15日
记录:

 

修改邮件夹状态位判断部分代码,解决添加邮件夹时报错:

xxxxxxxxxxxxxxxxxxdMic.php

switch($r[‘ufid’])

 

nginx限制请求频率:

server外面加上:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

内部添加:

limit_req zone=one burst=5;

 

解释:

跨越频率的伸手会被放置一个系列中延迟处理,当先burst次数的会回到50三

limit_req_zone :定义限制的key

$binary_remote_addr:依据ip来限制,nginx的预制变量

zone=one :空间的名称是one

10m :共享内部存款和储蓄器大小

rate=一r/s :频率1分钟一次呼吁

 

limit_req :使用刚才定义的key

zone=one :使用one这一个空间

burst    :超越频率的次数的,重回50三

 

kick off,up someone’s sleeve,tutorial [tu:ˈtɔ:riəl]教程,proxied 代理

exceeded 过度的 trial 试验

 

=========================================================================

2017年3月14日
记录:

 

一.劫持跳转https:

配置文件之中肯定要AllowOverride
All,允许覆盖

RewriteEngine on

#RewriteBase /

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^.*$ https://%{SERVER\_NAME}%{REQUEST\_URI} [L,R]

 

php实现强制跳转https

if($_SERVER[‘SERVER_PORT’]!=443){

    header(‘Location:
https://'.$\_SERVER\['SERVER\_NAME'\].$\_SERVER\['REQUEST\_URI'\]);

}

 

二.找寻公司id:

xxxxxxxxxxxxx

三.在h五版的进口,添加了七个状态位是不是开启的参数字传送给模板

xxxxxxxxxxxxxxxxdex.php

xxxxxxxxx

 

grep -rl “字符串” ./ 当前目录,-r递归,-l只列出特出的文件名称

 

phase 阶段

 

=========================================================================

2017年3月13日
记录:

 

一.list_folder接口列出邮件夹的代码修改:

xxxxxxxxxxxx体现邮件夹的流水生产线:

1.从mic读取出数据

二.循环mic回来的数组,判断公司表的气象,跳过打卡,晚报,集团布告

3.获得Sina_Mail_Folderinfo邮件夹对象,设置邮件夹熟习type(系统,用户,pop),设置标签label,加载语言包

 

三.起初化用户

xxxxxxxxxxx

 

 

xxxxxxxxxx

php中的左移<<和右移>>

右移运算的真相是将相应的多寡的2进制值逐位右移若干位,并放任出界的数字

判断27位是1,这样写,注意减1

if($result[‘entUserStatus’] >> 26 & 1 ){

 

按1个博客

composer create-project –prefer-dist cnvs/canvas blog

composer 消除越来越慢,全局:

composer config -g repo.packagist composer
https://packagist.phpcomposer.com

缺少mbstring:

yum install php71w-mbstring

缺少dom:

yum install php71w-xml

缺少pdo_sqllite:

yum install php71w-pdo

composer install

缺少driver:

yum install php71w-mysql

 

=========================================================================

2017年3月10日
记录:

 

1.H伍前端发信添加日志/打卡/公司公告信头接口

xxxxxxxxxxxxxxxxxxxail

二.H5前端读信 增添日志/打卡/公司布告参数

xxxxxxxxxxxxxxxxmail

PC端读信接口

xxxxxxxxxxxxxxxxxil.php

3.list_mail接口
添加邮件摘要字段,第1六任务

xxxxxxxxxxx

apache svn

yum install -y mod_dav_svn

 

=========================================================================

2017年3月9日
记录:

 

xxxxxxxxxxx

class test{

public $x=1;

}

$test=new test();

$name=”x-b”;

$test->$name=2;

var_dump($test);

echo $test->{‘x-b’}; 那种性子之中有-的如此包一下

 

$arr=array(‘value’=>’yes’);

var_dump($arr[‘value’][‘yes’]);重返的是壹

 

读信的时候生成cache

缓存的途径是strtolower(substr($mid, 2,
2)) . DIRECTOLacrosseY_SEPARATOR . $mid;

mid的3 4位/mid

 

寄信页添加信头完结

 

apache的另2个重写

        RewriteRule (.*) /index.php/$1

        RewriteCond %{QUERY_STRING} ^id=(.+)$

        RewriteRule ^/goods\.php$ /goods/$1

 

=========================================================================

2017年3月8日
记录:

 

注意:

明日1六伍服务器上上线了登陆页和配备等,其余服务器没上

于今svn上交给了,保存已发送的新代码,全数服务器都尚未上线

 

一.linux质量分析工具:

命令 interval times 间隔interval秒,执行times次

vmstat 报告进程,内存,内部存款和储蓄器分页,IO,traps,CPU活动

procs ———–r列 等待cpu进度数;b列
不可中断休眠进度数

memory———- swpd列
换出到磁盘的块数;free
空闲块数;buff 缓冲区块数;cache 缓存块数

swap– —–si 换入;so 换出 磁盘

io—- –bi 读取;bo 写出 块数

system– —–in 每秒中断;cs 每秒上下文切换 数量

cpu—– 开支的比例;st 是虚拟机偷走的;

内部存储器不足的表现:

free memory 小幅缩减,回收buffer和cache也无效,大量选择调换分区(swpd),页面调换(swap)频仍,读写磁盘数量(io)增多,缺页中断(in)增多,上下文切换(cs)次数扩展,等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)。

 

CPU密集型:cpu的us列值高,sy列cpu系统利用率

IO密集型:procs的值高,cpu的wa值高

发生内部存款和储蓄器调换:swap的si
so有很高的值

空闲的机械:cpu的idle列是百分之百

 

2.apache 403错误,关闭SELINUX:

setenforce 0

vim /etc/selinux/config

改成SELINUX=disabled

 

apache的根目录不要放在/root下,那几个目录不经常

apache的rewrite重写

        RewriteEngine on

        RewriteRule /goods/([0-9]+) /goods.php?id=$1

    nginx和apache是平等的rewrite /goods/([0-9]+)
/goods.php?id=$1;

     

三.date 打字与印刷和安装系统时间

date +%F  显示当前时间2017-0三-0八

`指令替换`

tar -czf 包名称 *, c是create创制, z是gzip压缩,f是file使用文件方式

tar -xf 包名称 , x是extract提取

摸索命令find / -mtime +10 -exec
rm {} \; mtime是 modified time修改时间,单位是天, +10是十天之前;-exec是执行命令, -exec 命令 {} \;大括号会被日前摸索的结果替换,\是从来的转义用的.例如: find /root -mtime +10 -exec wc -l {} \;
总结10天前文件的行数

4.

Linux后台进程管理利器:supervisor

 

=========================================================================

2017年3月7日
记录:

 

一.get请求中的+号,会在url上被替换到空格

评释token的时候加了个替换,把空格替换来+了

 

实时监督日志:

tail -f error.log | grep danger | awk ‘{print $4}’ | while read msg ; do
python mail.py $msg; done

 

xxxxxxxxxxxx

xxxxxxxxxxxxx

新加了个服务器:

xxxxxxxxxxx查看负载

free

iostat  2 3

 

按apache和php

yum install mod_php

=========================================================================

2017年3月6日
记录:

 

一.优化登6逻辑,验证成功后webview的加载页,并记录session-cookie,跳转

xxxxxxxxxxxxxxxxxxxxxxxxxx

 

CentOS安装rzsz命令:

yum install lrzsz

重启crontab:

service crond restart

 

=========================================================================

2017年3月3日
记录:

 

壹.拍卖读取邮件缓存的题材:

$adapter =
Sina_Mail_FileAdapter::getInstance($req->mail,$req->mailAccount->getEmail());

计算读取缓存和读取s三的个数日志

列取邮件夹的时候,把前拾篇邮件预先读取出来

 

2.fopen函数标题:

过期时间设置,当流里面一点消息都没回去时,才会收效

 

3.

邮件夹的缓存数据在这一个mc中

mxxxxxxxxxxx的时候,不读缓存

 

xxxxxxxxxxxufid: 7  xxxxxxxxxxxxxxx

肆.自家切换壹xxxxxxxxxxx登6状态失效难题

php.ini session.name = PHPSESSID

 

5.添加总计日志

xxxxxxxxxxxxxxxapter.php

Sina_Mail_Log::error(“S3_DISK_READMAIL
mid=>”.$req->mid.”,from=>s3″);

 

=========================================================================

2017年3月2日
记录:

 

摸索附属类小部件 全体下载战败难点

xxxxxxxxxxxxckatt.php

 

配置apache的ssl,多网站,多域名:

NameVirtualHost *:443

<VirtualHost *:443>

ServerName bj5.mail.sina.net

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

SSLCertificateFile /etc/httpd/conf.d/server.crt

SSLCertificateKeyFile /etc/httpd/conf.d/server.key

SetEnvIf User-Agent “.*MSIE.*” \

          nokeepalive ssl-unclean-shutdown \

          downgrade-1.0 force-response-1.0

 CustomLog logs/ssl_request_log \

          “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

 

xxxxxx

phrase [freɪz] 短语 ; cipher [‘saɪfə(r)] 密文;suite [swit] 套装 ;negotiate [nə’ɡoʊʃi.eɪt] 商议

prompt [prɑmpt] 提示; parallel [‘perə.lel] 平行 ; derive [dɪ’raɪv] 由来

=========================================================================

2017年3月1日
记录:

 

1.stream_context_create作用:可用于fopen(),file_get_contents()等进度的过期设置

fopen() 将钦赐的财富绑定到2个流上,成功时回来文件指针能源,借使打开退步,本函数再次来到FALSE。

stream_set_timeout($fp, 2);Set timeout period on a stream

 

二.设置读信缓存的晚点时间:

$expires =
$req->mailAccount->getConfig()->readmailCacheExpires;

if ($expires) {

    Sina_Application::response()->setExpires($expires);

}

header(‘Cache-Control: max-age=’ . $this->expires);

header(‘Expires: ‘ . gmdate(‘D, d M Y H:i:s’, time() +
$this->expires) . ‘ GMT’);

header(‘Pragma: ‘); // unset Pragma header

三.申明掉apache配置文件中的:

#ExpiresDefault A0

#Header set Cache-Control “private, must-revalidate, max-age=0,
proxy-revalidate, no-transform”

#Header set Pragma “no-cache”

 

ExpiresActive On

ExpiresDefault “access plus 300 seconds”

 

4.

根本结论

打开新窗口 假若钦定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会另行访问服务器。而假若钦赐了max-age值,那么在此值内的岁月里就不会重新访问服务器,例如:Cache-control: max-age=伍 表示当访问此网页后的五秒内重新访问不会去服务器.

在地点栏回车 如若值为private或must-revalidate,则唯有首先次访问时会访问服务器,现在就不再访问。借使值为no-cache,那么每便都会造访。如若值为max-age,则在逾期以前不会另行访问。

按后退按扭 借使值为private、must-revalidate、max-age,则不会重访问,而假设为no-cache,则每一次都再度访问.

按刷新按扭 无论为什么值,都会另行访问.

 

五.修复保存已发送以队列的款式

 

6.ServerAlias 尽管给ServerName起外号,通过Alias中的域名也足以访问这一个虚拟主机

 

相关文章