laughmaker

第 141 位会员

会员
个人信息
  • 加入于 2017-08-14 21:03:53
  • 最后登录时间 11个月前
个人成就
  • 发表文章次数 7
  • 发布回复次数 19
  • 个人主页浏览次数 3
微信支付后异步回调处理11个月前

搞定了,非常感谢。

$xml = @file_get_contents('php://input');

实际就是通过这个去接收数据。

    $xml = @file_get_contents('php://input');
    $data = XMLConverter::xml2array($xml);
    \Yii::error($data, 'error');

    Mailer::send('674081011@qq.com', '订单回调,测试一下', \GuzzleHttp\json_encode($data));

我之前为了方便,直接在通知里,把数据通过邮件发给我,但我发觉,我直接发送$xml,收到的数据只有1,但如果我转成array后,整个数据就是完整的。可能是因为微信的这个接口是通过流的方式传输的吧,具体我还没太搞明白。

Yii部署流程1年前

@Terry #12楼 我目前是代码是用git同步到git仓库,需要更新代码的时候,把代码上传到线上应用服务器,然后切换到发布环境,最后用mv命令把代码整个替换掉。

Yii部署流程1年前

@Terry #12楼 哦,理解了。谢了。

Yii部署流程1年前

@Terry #10楼 不会吧,你们在线上服务器装了git?svn?用这个来同步代码布署到线上?实时同步啊?

Yii部署流程1年前

@Terry #8楼 我说的就是更新线上代码,把测试通过的代码,部署到线上去,这一个流程。至于代码,我们一直是用git,这个都不存在什么问题。 如果文件替换,如果更新稍微多一些,就容易出错。 如果整个替换,那么缓存就经常被清理掉。 所以我想问问你们线上环境,一般是怎么部署的流程。

怎么样验证数据安全?1年前

嗯。谢了,https其实也还是不安全的,还是会被攻击。我目前在一些重要的接口里,用了rsa来加密。这个不能大规模用,不然很影响性能。

怎么样验证数据安全?1年前

我想了一下,我觉得走入了一个误区。 其实我想要实现的是,怎么样判断这个请求是我传任的人发来的。而不是随便一个人发过来的。 然后才是数据的加密问题。

怎么样验证数据安全?1年前

说白了,我就是想验证,这个请求是自己人发来的。而不是别人发来的。我怎么要在里面加这个签名? 比如我一个接口,谁都可以调用,但是我想在里面添加一个参数,然后我通过这个参数判断,这个请求是自己人发来的。而不是你随便一个人调用的。 现在我想要做的就是这个签名的实现问题,以及这个签名的安全问题。

Yii2的缓存里,如何通配符查询?1年前

哦,看到了,这里断开了。

Yii部署流程1年前

@Terry #6楼 svn是代码版本管理啊 难道我每次提交代码,只是做版本管理,都要同步到线上服务器?这不合理啊,有可能我提交的代码,功能都是不完整的。这很正常啊。

Yii2的缓存里,如何通配符查询?1年前

@Terry #8楼 没有啊,你什么浏览器?我safari显示都是正常的。

Yii部署流程1年前

不是啊,我是讲的,怎么样在功能完成后,将修改过后的功能,从开发环境部署到正式环境里去。 我自己目前的话,是如果小量的修改,比如只修改了一两个文件,那么我直接替换那两个文件。 如果修改比较多,那我就把整个代码替换到线上去。

Yii部署流程1年前

就是一般的Yii项目,不限于fecshop,部署到线上。 比如今天完成一某个小功能,部署到线上。 过几天修复了几个bug,更新到线上。

Yii2的缓存里,如何通配符查询?1年前

<?php /**

  • Created by PhpStorm.
  • User: HZD
  • Date: 2017/8/27
  • Time: 下午7:43 */

namespace common\traits;

use Yii;

// 默认缓存时间 define('DEFAULT_CACHE_DURATION', 60 60 24);

trait RedisCache {

/**
 * @return \yii\caching\Cache
 */
public function getCache() {
    return Yii::$app->getCache();
}

/**
 * @return yii\redis\Connection;
 */
public function getRedis() {
    return Yii::$app->cache->redis;
}

/**
 * 模糊查询匹配的keys数组
 * @param string $keyPattern
 * @return array|bool|null|string
 */
public function getCacheKeys(string $keyPattern) {
    $keys = $this->getRedis()->executeCommand('KEYS', [$keyPattern]);
    return $keys;
}

/**
 * @param string $key
 * @return mixed
 */
public function getCacheValue(string $key) {
    return $this->getCache()->get($key);
}

/**
 * @param string $key
 * @param $value
 * @param $duration
 * @return bool
 */
public function setCacheValue(string $key, $value, $duration=DEFAULT_CACHE_DURATION) {
    return $this->getCache()->set($key, $value, $duration);
}

/**
 * @param array $keys
 */
public function deleteCacheByKeys(array $keys=[]) {
    foreach ($keys as $key) {
        $this->getCache()->delete($key);
    }
}

/**
 * 获取key的剩余时间
 * @param string $key
 * @return int 剩余的ms数,key不存在,返回-2,key存在,但没有设置剩余时间返回-1
 */
public function getRemainingTime(string $key) {
    return $this->getRedis()->executeCommand('PTTL', [$key]);
}

}

/**
 * 产生一个随机长度的字符串,由数字和纯字母组成
 * @param int $length
 * @return string
 */
public function generateRandString(int $length=8) {
    $str = '';
    $seeds = "0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($seeds) - 1;

    for($i=0; $i < $length; $i++) {
        $str .= $seeds[rand(0, $max)];
    }

    return $str;
}

要通配符查询由某些关联字组成的keys,类似这样子就可以了。 $this->getCacheKeys('likeCount*')

Yii2的缓存里,如何通配符查询?1年前

还是描述一下我的解决方法,在Yii里,缓存的Key,系统是通过如下方式生成的:

public function buildKey($key)
{
    if (is_string($key)) {
        $key = ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
    } else {
        $key = md5(json_encode($key));
    }

    return $this->keyPrefix . $key;
}

也就是如果位数大于32,或者不是字符串,或者字符串里包含的不是纯数字和字毌,那么会通过md5做一次转换。也就是你传入的key跟最后生成存储在redis中的key不是同一个。

所以我自己做了一个方法来生成key,保证key就只是纯数字和字母组成,且不超过32位,这样就保持了一致性。

然后通过执行这个命令得到想要的keys

    $keys = $this->getRedis()->executeCommand('KEYS', [$keyPattern]);

这个接口,可以执行redis的相关命令。 完整的命令在这个链接里都有。 http://doc.redisfans.com

一个POST参数的问题1年前

有人提醒,是由 & 开头的空格符导致的,找到原因了

Yii2的缓存里,如何通配符查询?1年前

谢了。我准备换一种方式来实现了。

Yii2的缓存里,如何通配符查询?1年前

@water #1楼 谢谢老大回复,不过我看了一下,这个应该是缓存依赖吧,就是当依赖条件发生变化的时候,清除掉相应的缓存。不是通配符查询啊

Your Site Analytics