post请求超过1024字节解决方法

基础知识背景:


“Expect: 100-continue”的来龙去脉:
HTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是,在客户端发送 Request Message 之前,HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发来的消息主体(基于 Request Headers)。
即, Client 和 Server 在 Post (较大)数据之前,允许双方“握手”,如果匹配上了,Client 才开始发送(较大)数据。
这么做的原因是,如果客户端直接发送请求数据,但是服务器又将该请求拒绝的话,这种行为将带来很大的资源开销。

libcurl 发送大于1024字节数据时启用“Expect:100-continue‘特性:

在使用 curl 做 POST 的时候,当要 POST 的数据大于 1024 字节的时候,curl 并不会直接就发起 POST 请求,而是会分为两步
1:发送一个请求,包含一个 "Expect: 100-continue" 头域,询问 Server 是否愿意接收数据;
2:接收到 Server 返回的 100-continue 应答以后,才把数据 POST 给 Server;

PHP Curl-library 可以主动封禁此特性:

PHP curl 遵从 libcurl 的特性。由于不是所有 web servers 都支持这个特性,所以会产生各种各样的错误。如果你遇到了,可以用下面的命令封禁”Expect”头域:

<?php
    //添加如下head头就可传输大于1024字节请求
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
?>


Centos 安装或更新 cmake

使用命令 查看当前cmake版本

cmake --version

第一步:首先yum安装gcc gcc-c++

yum install gcc-c++ gcc -y

第二步:去 cmake官网 下载 cmake-3.10.3.tar.gz 以tar.gz结尾的源码包,不要下错

wget https://cmake.org/files/v3.10/cmake-3.10.3.tar.gz

第三步:解压cmake源文件 并将源文件放入/tmp/文件下

cd /tmp
tar -zxvf cmake-3.10.3.tar.gz

第四步:编译安装cmake

cd cmake-3.10.3
./configure
make
make install

第五步:安装完成之后 再次查看当前cmake版本

cmake --version

作者:jartin
来源:CSDN
原文:https://blog.csdn.net/jartins/article/details/80041858
版权声明:本文为博主原创文章,转载请附上博文链接!

linux查看和修改PATH环境变量的方法

查看PATH:echo $PATH
以添加mongodb server为列
修改方法一:
export PATH=/usr/local/mongodb/bin:$PATH
//配置完后可以通过echo $PATH查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
用户局限:仅对当前用户

修改方法二:
通过修改.bashrc文件:
vim ~/.bashrc
//在最后一行添上:
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户

修改方法三:
通过修改profile文件:
vim /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

修改方法四:
通过修改environment文件:
vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入“:/usr/local/mongodb/bin”
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

Centos 安装 opencv

下载opencv : https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/
opencv视频处理部分是基于ffmpeg的,所以如果想用opencv3来处理视频那么必须安装ffmpeg依赖,并且不能下载官网上最新的ffmpeg,opencv调用的是比较老的系统版本
然后如果需要ffmpeg支持,那么需要安装相关的库,安装过程如下:
安装epel扩展源 : yum -y install epel-release
添加扩展源 :

yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
安装ffmpeg依赖 : yum -y install ffmpeg ffmpeg-devel

安装opencv

解压 : unzip opencv-3.4.3.zip
cd opencv-3.4.3

开始安装 :
rm CMakeCache.txt (防止报错 error : in-source builds are not allowed)
mkdir build (opencv不允许在源目录安装)
cd build
cmake ..
make
make install

mac php开发环境配置

httpd -v 查看当前Apache 和PHP 版本
PHP -v 查看版本
sudo apachectl stop 关闭系统自带的Apache
如果已经加入launchctl就用下面的命令关闭sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

手动删除一同自带的Apache
sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/

删除自带的php
sudo rm -r /usr/bin/php

安装brew : http://brew.sh/

安装nginx : brew install nginx

修改配置文件:
sudo vim /usr/local/etc/nginx/nginx.conf #修改默认的8080端口为80

给予管理员权限:
sudo chown root:wheel/usr/local/opt/nginx/bin/nginx
sudo chmod u+s/usr/local/opt/nginx/bin/nginx

运行nginx:
sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出
nginx nginx -t #测试配置是否有语法错误

用法详解:
nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
选项列表
-?,-h : 打开帮助信息
-v : 显示版本信息并退出
-V : 显示版本和配置选项信息,然后退出
-t : 检测配置文件是否有语法错误,然后退出
-q : 在检测配置文件期间屏蔽非错误信息
-s signal : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/)
-c filename : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
-g directives : 设置配置文件外的全局指令

mysql的安装与配置

brew install mysql
cd /usr/local/opt/mysql/
修改配置文件
sudo vim my.cnf #如果出现无法启动mysql,rm my.cnf
加入launchctl启动控制:
mkdir -p ~/Library/LaunchAgents/ cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
#取消启动 # launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

初始化:mysql
./bin/mysql_install_db

执行安全设置脚本,设置root账号密码
./bin/mysql_secure_installation

命令行连接mysql:
mysql -uroot -p

php的安装与配置

brew 默认没有 php 安装包:
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
现在可以安装php了:
brew search php 查找可安装的PHP包
brew install php@7.2
将php路径加入PATH
在文档最后,添加: export PATH="/usr/bin/php/bin:$PATH"
保存,退出,然后运行: #source /etc/profile


Nginx.cong 配置

server {
listen 80;
server_name test.oa2.com;
location / {
root /usr/local/var/www/oa;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php$ {
root /usr/local/var/www/oa;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^.+.(ico|gif|jpg|jpeg|png)$ {
access_log off;
root /usr/local/var/www/oa;
expires 7d;
}
}


linux php7 安装memcached扩展

cd /usr/local/php/ext/ (自己的PHP安装目录)
git clone https://github.com/php-memcached-dev/php-memcached memcached
cd memcached/git checkout php7 (切换到php7分支)
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config \--with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
注释 : /usr/local/libmemcached 是安装memcached客户端的地址 ,如果没有先安装
make && make install
------Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
------ls /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ (查看so文件)
vim /usr/local/php/etc/php.ini 加入:extension=memcached.so
service php-fpm restart

Linux 快速安装 php运行环境

1: yum install screen
2: screen -S lnmp 会打开一个新的窗口,由于为CentOS系统,我们只需继续在新窗口中执行安装lnmp一键包的命令即可。
3: wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
敲击回车之后,会提示要求选择DataBase、PHP、MySQL的版本号,我们均可以选择敲击回车来选择默认的版本即可。我们数据库的默认账号为root,安装过程中会要求我们设置数据库的密码,若我们也敲击回车,则默认的数据库密码为root(我们需要记清我们设置过的数据库的账号和密码以保证我们之后能正常的访问)。当运行至出现如下提示,我们只需键入任何一个键,就开始安装了。接下去只需等待30至40分钟,即可完成自动安装。

命令行连接 redis / memcache

reids 连接命令

-h : host
-p : port
-a : pass
redis-cli -h 192.168.3.120 -p 20000 -a 'xhc12345!QWEASD901'

连接memecache

telnet 192.168.3.120 11211

memcace使用

命令格式:
<command> <key><flags><exptime><bytes>\r\n <data block>\r\n
<command> : add , set , 或者 replace
<key> : 缓存的key
<flag> : 16位无符号整数,和key存储的数据一起存储,在get时返回
<exptime> : 过期时间,0表示永远不过期,如果非0,表示unix时间或者距此秒数
<bytes> : 存储数据的字节数

例:
add test_key 1 0 5 【回车键】 hello
set test_key 1 0 5 【回车键】 hello
get test_key

Opencc扩展使用

方法列表:

opencc_open(string ConfigName) ConfigName:配置文件名,成功返回资源对象,失败返回false
opencc_close(resource ob) 关闭资源对象,成功返回true,失败返回false. 成功后od会置为NULL
opencc_error() 返回最后一条错误信息,有错误信息返回String,无错误返回false
opencc_convert(string str, resource od) str:要转换的字符串(UTF-8),od:opencc资源对象

opencc_open() 方法可配参数

s2t.json 简体到繁体
t2s.json 繁体到简体
s2tw.json 简体到台湾正体
tw2s.json 台湾正体到简体
s2hk.json 简体到香港繁体(香港小学学习字词表标准)
hk2s.json 香港繁体(香港小学学习字词表标准)到简体
s2twp.json 简体到繁体(台湾正体标准)并转换为台湾常用词汇
tw2sp.json 繁体(台湾正体标准)到简体并转换为中国大陆常用词汇

例:

$od = opencc_open("s2twp.json"); //传入配置文件名
$text = opencc_convert("我是简体 转繁体。", $od);
echo $text;
$od = opencc_open("tw2sp.json"); //传入配置文件名
$text = opencc_convert("我是繁体 转简体。", $od);
echo $text;
opencc_close($od);