shell 带签名请求,yii 处理带签名的请求
处理请求 class TestController extends Controller
{ public function init()
{
if(!YII_ENV_DEV){
throw new ExitException(201,'can not access not in dev mode');
}
} /**
*
*/
public function actionClientip()
{
if(YII_ENV_DEV){
$request = Yii::$app->getRequest();
$keyStr = 'key_123';
$timestamp = $request->get('timestamp');
$sign = $request->get('sign');
if(md5($timestamp.$keyStr) == $sign){
$databaseIp = $request->getUserIP();
// $databaseIp = '127.0.0.1';
$conainer = new ContainerSaveForDynamicData();
$dbComponetConfig = [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host='.$databaseIp.';port=3306;dbname=database1',
'username' => 'username1',
'password' => 'password1',
'charset' => 'utf8',
'tablePrefix'=>'prefix_'
];
$conainer->setDataByKey(ContainerSaveForDynamicData::DB_COMPONENT_CONFIG,$dbComponetConfig);
return 'success';
}
return 'fail';
}
else{
return 'fail,not in dev mode';
}
} } 非标准路径缓存管理 use yii\helpers\FileHelper;
// $conainer = new \common\components\ContainerSaveForDynamicData();
// $conainer->getDataByKey('db4Dynamic');
// $conainer->setDataByKey('db4Dynamic','127.0.0.1');
class ContainerSaveForDynamicData
{ const DB_COMPONENT_CONFIG = 'dbComponetConfig';
public $cacheFileSuffix = '.bin';
public $cachePath = './dynamic-data-cache';
public $dirMode = 0775;
public $keyPrefix = '';
public $fileMode; public function __construct()
{
$this->cachePath = __DIR__.'/../../dynamic-data-cache';
if (!is_dir($this->cachePath)) {
FileHelper::createDirectory($this->cachePath, $this->dirMode, true);
}
} /**
* 指定键的值
* @param unknown $key
* @return boolean|unknown
*/
public function getDataByKey($key)
{
$key = $this->buildKey($key);
$cacheFile = $this->getCacheFile($key);
if(!file_exists($cacheFile)){
return false;
} if (@filemtime($cacheFile) > time()) {
$fp = @fopen($cacheFile, 'r');
if ($fp !== false) {
@flock($fp, LOCK_SH);
$cacheValue = @stream_get_contents($fp);
@flock($fp, LOCK_UN);
@fclose($fp); $cacheValue = unserialize($cacheValue); return $cacheValue;
}
} return false;
} /**
* 设置值
*/
public function setDataByKey($key,$value,$duration=0)
{
$key = $this->buildKey($key);
$cacheFile = $this->getCacheFile($key); $value = serialize($value); if (@file_put_contents($cacheFile, $value, LOCK_EX) !== false) {
if ($this->fileMode !== null) {
@chmod($cacheFile, $this->fileMode);
}
if ($duration <= 0) {
$duration = 31536000; // 1 year
}
return @touch($cacheFile, $duration + time());
} else {
$error = error_get_last();
return false;
}
} protected function buildKey($key)
{
$key = md5(json_encode($key));
return $this->keyPrefix . $key;
} /**
* 缓存文件名称
* @param unknown $key
* @return string
*/
protected function getCacheFile($key)
{
return $this->cachePath . DIRECTORY_SEPARATOR . $key . $this->cacheFileSuffix;
}
} 从缓存中读取数据库配置 <?php if(YII_ENV_DEV){
$conainer = new ContainerSaveForDynamicData();
if(($data = $conainer->getDataByKey(ContainerSaveForDynamicData::DB_COMPONENT_CONFIG)) != false){
return $data;
}
else{
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;port=3306;dbname=database1',
'username' => 'username1',
'password' => 'password1',
'charset' => 'utf8',
'tablePrefix'=>'prefix_'
];
} }
else if(YII_ENV_TEST){
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;port=3306;dbname=database1',
'username' => 'username1',
'password' => 'password1',
'charset' => 'utf8',
'tablePrefix'=>'prefix_'
];
}
else if(YII_ENV_PROD){ } 定时请求 #!/bin/sh
export LANG=en_US.UTF-8
timestamp=`date "+%s"` keystr="key_123"
pre_str=$timestamp$keystr
sign_str=$(echo -n $pre_str|md5sum|awk -F ' ' '{print $1}')
req_url_str="http://www.xxx.com/index.php?r=test/clientip&sign="$sign_str"×tamp="$timestamp
result_str=`curl -s --url $req_url_str` echo $result_str >> /a/b/c/www.xxx.com/mytasks/logs/log_update_ip.log
shell 带签名请求,yii 处理带签名的请求的更多相关文章
- 在基于vue的webpack脚手架开发中使用了代理转发,结果浏览器发出的请求中不带cookie导致登录时总是session失效怎么办?
环境: 有2个业务接口需要转发到82的服务器上: ../user/getCode.do ../user/doLogin.do 现象: 使用上述的 ...
- 【转】shell脚本中echo显示内容带颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e.格式如下: echo -e "\033[41;36m something here \033[0m&qu ...
- shell脚本中echo显示内容带颜色
转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...
- 支付宝ios支付请求Java服务端签名报的一个错(ALI40247) 原创
今天做app的支付宝支付,遇到些问题,以前做支付宝支付签名都是直接在客户端App进行,今天下了最新版本ios的支付宝支付demo,运行demo时底部有红色的显眼字体,告知用户签名必须在服务端进行... ...
- Yii 自带的分页实例
yii自带的分页很好用,简单的几行代码就能把分页搞出来,唯一恼火的是只能写在controller中,所以有时候controller中的方法有点臃肿.废话少说,上代码上图. 一.代码实例: 1.控制器中 ...
- shell脚本中使用echo显示带颜色的内容
shell脚本中使用echo显示带颜色的内容,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e &qu ...
- js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)
js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...
- Java后端 带File文件及其它参数的Post请求
http://www.roak.com Java 带File文件及其它参数的Post请求 对于文件上传,客户端通常就是页面,在前端web页面里实现上传文件不是什么难事,写个form,加上enctype ...
- 【转】shell脚本中echo显示内容带颜色的实现方法
shell脚本中echo显示内容带颜色的实现方法 shell脚本里使用echo输出颜色
- 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】
自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
随机推荐
- C++随笔:.NET CoreCLR之GC探索(2)
首先谢谢 @dudu 和 @张善友 这2位大神能订阅我,本来在写这个系列以前,我一直对写一些核心而且底层的知识持怀疑态度,我为什么持怀疑态度呢?因为一般写高层语言的人99%都不会碰底层,其实说句实话, ...
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- GIT笔记命令行(1)
Git简单易用,只要输入git就可以列出他的所有参数 C:\Users\spu>git usage: git [--version] [--help] [-C <path>] [-c ...
- cmd窗口编码设置
问题描述:不知道误操作了什么,导致cmd窗口的鼠标显示位置出现错位,如下: 现在要将鼠标位置调整回来. 使用工具:cmd. 操作步骤: 1.查看cmd属性可以看到 可以看到是UTF-8编码格式的,我们 ...
- ubuntu14.04下安装node.js
在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HO ...
- POJ1743 Musical Theme [后缀数组]
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 27539 Accepted: 9290 De ...
- .NET - 基于事件的异步模型
注:这是大概四年前写的文章了.而且我离开.net领域也有四年多了.本来不想再发表,但是这实际上是Active Object模式在.net中的一种重要实现方法,因此我把它掏出来发布一下.如果该模型有新的 ...
- Leetcode 笔记 113 - Path Sum II
题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...
- jQuery选择器中,通配符[id^='code']input[id$='code'][id*='code']
1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']&qu ...