mysqldump -h ip -P port -u usr -p Password --default-character-set=utf8mb4 --net_buffer_length=10240 --no-tablespaces --no-create-db --no-create-info --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset --hex-blob db_name [table_name] > /home/dump_1000w.sql
mysql 快速导出数据
http常见状态码
一、1开头的状态码(信息类)
100,接受的请求正在处理,信息类状态码
二、2开头的状态码(成功类)
2xx(成功)表示成功处理了请求的状态码
200(成功)服务器已成功处理了请求。
三、3开头的状态码(重定向)
3xx(重定向)表示要完成请求,需要进一步操作。通常这些状态代码用来重定向。
301,永久性重定向,表示资源已被分配了新的 URL
302,临时性重定向,表示资源临时被分配了新的 URL
303,表示资源存在另一个URL,用GET方法获取资源
304,(未修改)自从上次请求后,请求网页未修改过。服务器返回此响应时,不会返回网页内容
四、4开头的状态码(客户端错误)
4xx(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理
400(错误请求)服务器不理解请求的语法
401表示发送的请求需要有通过HTTP认证的认证信息
403(禁止)服务器拒绝请求
404(未找到)服务器找不到请求网页
五、5开头的状态码(服务器错误)
5xx(服务器错误)这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求的错误
500,(服务器内部错误)服务器遇到错误,无法完成请求
503,表示服务器处于停机维护或超负载,无法处理请求
php 连接rabbitmq
composer require php-amqplib/php-amqplib 3.1.2
<?php
namespace app\ospay\model;
use app\common\library\helper;
use PhpAmqpLib\Channel\AMQPChannel;
use PhpAmqpLib\Connection\AMQPSocketConnection;
use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Wire\AMQPAbstractCollection;
use PhpAmqpLib\Wire\AMQPTable;
use think\facade\Db;
use think\Model;
use app\ospay\serve\LvServe;
/**
* 支付系统
* Class OsPay
* @package app\ospay\model
*/
class OsQueen extends Model
{
public static $QUEEN_KEY = 'OS_PAY_NOTIFY_LIST';
public static $CON;
public static function getQueenCon()
{
// 创建链接
$connection = new AMQPSocketConnection(
config('rabbitmq.host'), config('rabbitmq.port'),
config('rabbitmq.login'), config('rabbitmq.password'),
config('rabbitmq.vhost'), false,
'AMQPLAIN', null, 'en_US',
3, false, 3, 60
);
return $connection;
}
public static function getChan(AMQPSocketConnection $connection)
{
$arg = new AMQPTable();
$arg->set('x-max-length', 100*10000); //缓冲队列 最长100万
$arg->set('x-max-length-bytes', 512 * 1000 * 1000); //单位字节(byte) 512M
$channel = $connection->channel();
$channel->queue_declare(OsQueen::$QUEEN_KEY, false, true, false, false, false, $arg);
return $channel;
}
/**
* 添加到队列
*
*/
public static function sendQueen(AMQPChannel $channel,$data)
{
$msg = new AMQPMessage($data, ['delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT]);
$channel->basic_publish($msg, '', self::$QUEEN_KEY);
}
/**
* 消费者
* @throws \ErrorException
*/
public static function consume(string $tag)
{
echo $tag;
// 创建链接
$con=OsQueen::getQueenCon();
$chan=OsQueen::getChan($con);
$func = function (AMQPMessage $msg) {
OsQueen::notifyOrder($msg->getBody());
$msg->ack();
};
$chan->basic_qos(null, 1, null);
$chan->basic_consume(self::$QUEEN_KEY, $tag, false, false, false, false, $func);
while($chan->is_open()) {
$chan->wait();
}
}
public static function notifyOrder($queen_id)
{
$order = OsQueen::find($queen_id);
$config=OsShopAttach::where('shop_id',$order['shop_id'])->cache(600)->find();
if(!empty($order)&&$order['notify_status']==0){
$data = [
'code' => $order['code'],
'shop_id' => $order['shop_id'],
'out_trade_no' => $order['out_trade_no'],
'order_no' => $order['order_no'],
'total_fee' => $order['total_fee'],
];
$data['sign'] = LvServe::sign($data,$config['md5_key']);
$data['attach'] = $order['attach'];
$data['msg'] = $order['msg'];
$w[] = [
'id', '=', $order['id']
];
try {
$resp = LvServe::curl($order['notify_url'], $data, 6);
$up = [];
$up['notify_status'] = strtoupper($resp) == 'SUCCESS' ? 1 : 0;
$up['update_at'] = time();
$up['notify_num']=Db::raw('notify_num+1');
OsQueen::where($w)->update($up);
} catch (\Exception $e) {
log_write(helper::jsonEncode($e->getMessage()), 'error');
$up['notify_status'] = 0;
$up['update_at'] = time();
OsQueen::where($w)->update($up);
return;
}
}
}
}
公钥和私钥
1.加密方式分为对称加密和非对称加密,对称加密只使用一个秘钥,加密和解密都使用该秘钥;非对称加密则使用一对秘钥,使用公钥加密,私钥解密。
** 2.公钥和私钥成对出现
公开的密钥叫公钥,只有自己知道的叫私钥
用公钥加密的数据只有对应的私钥可以解密
用私钥加密的数据只有对应的公钥可以解密
如果可以用公钥解密,则必然是对应的私钥加的密
如果可以用私钥解密,则必然是对应的公钥加的密**
3.发送方(A)使用接收方(B)的公钥对数据加密,使用自己的私钥对加密数据进行签名。然后组装加密数据和签名,发送给接收方(B)
接收方(B)接收到A的数据后。先使用发送方(A)的公钥数据加密数据进行验签,签名无问题后。再使用自己的私钥对数据进行解密。
编码格式
同样的X.509证书,可能有不同的编码格式,目前有以下两种编码格式.
PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
Java和Windows服务器偏向于使用这种编码格式.
相关的文件扩展名
这是比较误导人的地方,虽然我们已经知道有PEM和DER这两种编码格式,但文件扩展名并不一定就叫"PEM"或者"DER",常见的扩展名除了PEM和DER还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式.
CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,相信你已经知道怎么辨别.
CER - 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.
KEY - 通常用来存放一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.
查看KEY的办法:openssl rsa -in mykey.key -text -noout
如果是DER格式的话,同理应该这样了:openssl rsa -in mykey.key -text -noout -inform der
CSR - Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好.做过iOS APP的朋友都应该知道是怎么向苹果申请开发者证书的吧.
查看的办法:openssl req -noout -text -in my.csr (如果是DER格式的话照旧加上-inform der,这里不写了)
PFX/P12 - predecessor of PKCS#12,对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,如何把PFX转换为PEM编码?
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
这个时候会提示你输入提取代码. for-iis.pem就是可读的文本.
生成pfx的命令类似这样:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt
其中CACert.crt是CA(权威证书颁发机构)的根证书,有的话也通过-certfile参数一起带进去.这么看来,PFX其实是个证书密钥库.
最后加上自己的理解:
PEM和DER是不同的编码方式,PEM在linux上常用,DER在window上常用,可以相互转换。
在linux上常用crt和key俩文件,在window常用PFX,PFX里边包含证书和私钥,可以用来生成,也可以通过证书和私钥合成PFX,都是可以的。