ecstore-短信忽然发送不了了

周一,客服反馈商城的注册短信收不到。

检查了一下发现确定发送不了,但是代码都没改,怎么会这样子呢?第一个感觉就是会不会是通道的问题。

所以上网问同样用平台的人,答案是可以发送的。

那么问题就是我们自己的问题了。

所以,写个测试例子调试吧。

随便在控制器写个调用吧,代码如下:

$messengerModel = kernel::single('b2c_mdl_member_messenger');
$mobile = '15959******';
$tmpl = 'account-lostPw';
$data = array(
	'vcode'         => time(),
);
$sendType = 'notice';
$sender = 'b2c_messenger_sms';
$tmpl_name = 'messenger:b2c_messenger_sms/'.$tmpl;
$messengerModel->_send($sender,$tmpl_name,$mobile,$data,$tmpl,$sendType);
exit('OK...');

因为这个调用时没有反馈的,我们需要在调用的时候将通道反馈的信息打印出来,需要做些调试方式。具体就根据个人的喜欢调试吧。

最终,得到结果是短信通道的密码错误。

汗~

确定没有改呀。算了,重置吧。

然后,需要使用“清除系统中原有的与shopex用户中心关联的数据”来清除关联数据。

看这个名字有点怕怕,最后新建一个新站测试发现是没问题的,仅仅是清除关联激活的信息,其他的数据完整保留哈。

这个数据就是:全新安装ecstore后会出现要激活的账号跟密码,是免费注册的一个账号。激活了才会进入后台管理界面。

下面附上调试过程中的一些重点文件,记录一下,省的以后还要重新跟。

在app\b2c\lib\messenger\sms.php中的send($to,$title,$message,$config)方法是短信发送的封装方法,自动添加签名等信息。

在app\b2c\lib\messenger\smschg.php中的send($contents,$config,&$msg)方法是主要方法,这边就是最终的调用短信通道接口的所在,所以,需要返回接口的错误信息,需要在这边调试输出。

在app\base\lib\enterprise.php中的方法关系到账户密码的获取方法。而这些数据是保存在表sdb_base_setting中,获取的SQL语句是:

SELECT * FROM `sdb_base_setting` WHERE `key` LIKE ‘ecos.enterprise_info’

我直接将加密串更新进去,然后,测试就可以了。

END

 

PHP-memcached与redis客户端测试

今天又开一台云主机,然后又要设置一下redis与memcached的有效性,哎,每次都要重复这个步骤,记录一下测试代码吧,方便查找。

// REDIS
$redis = new Redis();
$redis->connect( 'r-*.redis.rds.aliyuncs.com', 6379 );
$redis->auth( '******' );
$ret = $redis->set('www.ipodmp.com', 'ChinaBUG');
var_dump($ret);
$allKeys = $redis->keys('*');
print_r($allKeys);
$redis->close();

echo "\n",'*-***********************',"\n";

// memcached
$connect = new Memcached;
$connect->setOption(Memcached::OPT_COMPRESSION, false); //关闭压缩功能
$connect->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二进制协议
$connect->setOption(Memcached::OPT_TCP_NODELAY, true); //重要,php memcached有个bug,当get的值不存在,有固定40ms延迟,开启这个参数,可以避免这个bug
$connect->addServer('m-*.memcache.rds.aliyuncs.com', 11211); //添加OCS实例地址及端口号
$connect->setSaslAuthData('aaaaaaaaaa', '******'); //设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤;新版OCS的username可以置空
$connect->set("ChinaBUG", "ChinaBUG20180809");
echo 'ChinaBUG\'s: ',$connect->get("ChinaBUG");
$connect->quit();