处理请求

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 处理带签名的请求的更多相关文章

  1. 在基于vue的webpack脚手架开发中使用了代理转发,结果浏览器发出的请求中不带cookie导致登录时总是session失效怎么办?

    环境:            有2个业务接口需要转发到82的服务器上:     ../user/getCode.do     ../user/doLogin.do 现象:          使用上述的 ...

  2. 【转】shell脚本中echo显示内容带颜色

    shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e.格式如下:   echo -e "\033[41;36m something here \033[0m&qu ...

  3. shell脚本中echo显示内容带颜色

    转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...

  4. 支付宝ios支付请求Java服务端签名报的一个错(ALI40247) 原创

    今天做app的支付宝支付,遇到些问题,以前做支付宝支付签名都是直接在客户端App进行,今天下了最新版本ios的支付宝支付demo,运行demo时底部有红色的显眼字体,告知用户签名必须在服务端进行... ...

  5. Yii 自带的分页实例

    yii自带的分页很好用,简单的几行代码就能把分页搞出来,唯一恼火的是只能写在controller中,所以有时候controller中的方法有点臃肿.废话少说,上代码上图. 一.代码实例: 1.控制器中 ...

  6. shell脚本中使用echo显示带颜色的内容

    shell脚本中使用echo显示带颜色的内容,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e &qu ...

  7. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  8. Java后端 带File文件及其它参数的Post请求

    http://www.roak.com Java 带File文件及其它参数的Post请求 对于文件上传,客户端通常就是页面,在前端web页面里实现上传文件不是什么难事,写个form,加上enctype ...

  9. 【转】shell脚本中echo显示内容带颜色的实现方法

    shell脚本中echo显示内容带颜色的实现方法 shell脚本里使用echo输出颜色  

  10. 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】

    自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信   如果你的规划需要创建多个证书,那么使用私有 ...

随机推荐

  1. [BootStrap] 富编辑器,基于wysihtml5

    在我的周围,已经有很多人在使用BootStrap,但对于任何一个带留言.评论.提问.文章编辑功的网站,编辑器永远是重中之重,显然,早期的编辑器完全没考虑过BootStrap的出现,或皮肤跟网站不匹配, ...

  2. django 第三天 有关库使用

    项目中经常会用到第三方的lib和app,有些lib和app会进行不断更新,更新后可能会存在冲突,因此可以创建externals目录,下面欧app和libs.app存放django-cms,haysta ...

  3. hbase协处理器编码实例

    Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionSer ...

  4. Linux常用命令

    命令格式与目录处理命令 ls 命令格式与目录处理命令 ls 命令格式:命令 [-选项][参数] 例:ls -la /etc 说明: 1)个别命令使用不遵循格式 2)当有多个选项时,可以写在一起 3)简 ...

  5. linux的top命令参数详解

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  6. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  7. Ubuntu(Linux) + mono + jexus +asp.net MVC3 部署

    感谢  张善友 的建议,我把 微信订餐  由nginx 改成 jexus,目前运行状况来说,确实稳定了很多,再次感谢. 部署步骤参考 jexus官网:http://www.jexus.org/ htt ...

  8. [PHP源码阅读]array_slice和array_splice函数

    array_slice和array_splice函数是用在取出数组的一段切片,array_splice还有用新的切片替换原删除切片位置的功能.类似javascript中的Array.prototype ...

  9. WPF - 属性系统 (4 of 4)

    依赖项属性的重写 在基于C#的编程中,对属性的重写常常是一种行之有效的解决方案:在基类所提供的属性访问符实现不能满足当前要求的时候,我们就需要重新定义属性的访问符. 但对于依赖项属性而言,属性执行逻辑 ...

  10. Floyd-Warshall 全源最短路径算法

    Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...