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签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
随机推荐
- Oracle 数据库语句大全
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...
- Autofac - 属性注入
属性注入不同于通过构造函数方式传入参数. 这里是通过注入的方式, 在类创建完毕之后, 资源释放之前, 给属性赋值. 这里, 我重新弄一些类来演示这一篇吧. public class ClassA { ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- Flexible 弹性盒子模型之CSS flex-grow 属性
实例 让第二个元素的宽度为其他元素的三倍: div:nth-of-type(1){flex-grow:1;} div:nth-of-type(2){flex-grow:3;} div:nth-of-t ...
- 微信小程序服务范围重大更新
12.29日,小程序服务范围做了重大更新,增对富媒体和工具类型的小程序,增加了很多细分领域 富媒体:增加资讯,FM电台,有声读物等,媒体平台可上小程序了 工具:信息查询,网络代理,健康,企业管理等 , ...
- 0042 MySQL学习笔记-入门--01
基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...
- Spring WebService入门
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...
- [转]thinkphp 模板显示display和assign的用法
thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...
- sublime text 3 + python配置,完整搭建及常用插件安装
四年的时间,一直使用EmEditor编辑器进行Python开发,之前是做面向过程,只需要将一个单独的py文件维护好即可,用着也挺顺手,但是最近在做面向对象的开发,不同的py文件中相互关联较多,感觉单纯 ...
- Mono 3.2.7发布,JIT和GC进一步改进
Mono 3.2.7已经发布,带来了很多新特性,如改进的JIT.新的面向LINQ的解释器以及使用了64位原生指令等等. 这是一次主要特性发布,累积了大约5个月的开发工作.看上去大部分改进都是底层的性能 ...