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签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
随机推荐
- [LintCode]——目录
Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...
- H3 BPM让天下没有难用的流程之功能介绍
H3 BPM10.0功能地图如下: 图:H3 BPM 功能地图 一.流程引擎 H3 BPM 流程引擎遵循WFMC 标准的工作流引擎技术,设计可运行的流程和表单,实现工作任务在人与人.人与系统.系统 ...
- liunx 磁盘管理命令记录
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- .NET跨平台之旅:数据库连接字符串写法引发的问题
最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...
- raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序
参考网址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi ...
- xamarin绑定原生库的一些坑
最近一个项目涉及到较多的第三方库的绑定技术,中间遇到了几个坑,记录下来与大家分享 绑定Jar库 monoandroid对原生库的调用都通过Android.Runtime.JNIEnv进行调入(http ...
- ubuntu+mono+jexus 搭建.net的web平台 实现.net跨平台
准备工作: vmware 用来安装 ubuntu 下载地址:VMware-workstation-9.0.1-894247.exe.tar 注册码: 1A4P8-DMK0N-FZ431-7K8NH-2 ...
- 使用Rest访问Redis中的数据
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 大家在用Redis保存数据的时候,有不同的序列化方式.用得最多应该还是JSON,有一些场景我们需要以Http请 ...
- 我们为什么不能只用O记号来谈论算法?
在刷LeetCode-1TwoSum的时候,有个人在论坛留言,大致意思如下: 我的算法击败了90%的人,O(nlgn)算法比O(n)算法快. 我觉得这个人是不懂算法的.让我一步一步解释. # O的含义 ...
- RangePartitioner 实现简记
摘要: 1.背景 2.rangeBounds 上边界数组源码走读 3.RangePartitioner的sketch 源码走读 4.determineBounds 源码走读 5.关于RangePart ...