这篇文章真的是对微信云产品提出意见,不是标题党哦!,慢慢往下看。也可以直接跳转到 三、简单使用
一、微信云托管
这款产品我是第一次使用,以前的开发过程中也看到过很多云托管的选项,包括在微信小程序的开发文档中。但是一直没有尝试过,今天特意来感受一下。
下面简单的介绍一下这款产品,给和我一样没有使用过的童鞋引路。
1、微信云托管介绍
微信云托管是微信团队提供的以云原生为基础的,免运维、高可用服务上云解决方案,无需服务器,1分钟即可部署小程序/公众号服务端。
2、应用场景
网络需求业务
对网络延迟、DDoS攻击等有网络性能及安全需求的的小程序/公众号业务。使用微信云托管服务后,客户端请求从微信就近节点经过微信专线到达服务,整体链路相比传统服务来说更加安全,同时也防止各种攻击问题,安全性由微信团队支持,与微信客户端安全级别相同。
传统业务后台服务
使用传统技术栈的后台服务,资源运维人力投入高,引入新技术学习门槛高,重构业务难以承担改造成本,资源运维人力投入高,运用微信云托管几乎无需改造成本,可快速迁移存量业务,同时支持东西向通信微服务和服务常驻。微信云托管自带监控告警、日志服务、负载均衡、自动弹性、版本灰度、环境隔离等服务,同时结合微信天然鉴权等能力。
流量不稳定触发型业务
流量不稳定服务闲时资源利用率低造成资源浪费,接入微信云托管可按实时流量自动扩缩容,突发场景下可在20s内快速扩容支持业务运行,1小时内无流量实例副本数支持缩容到0,做到无流量时无成本消耗。同时微信云托管按实际用量计费大大降低成本,在结合云开发的云数据库、云存储等服务也可以同时降低数据库存储的使用成本。
流程优化业务
想优化开发流程,但不想耗费人力自建灰度发布、CI/CD流水线等。微信云托管提供流水线能力,只需要关联代码仓库,并配置相关触发策略,就可以实现代码到服务发布的全自动流程。还提供企业微信机器人提醒,第一时间告知发布情况。
以上内容来源于微信云托管官网
二、创建流程
登录微信云托管官网,使用微信扫码登录,如下图
选择账户中绑定的微信小程序、公众号、小商店等账户,我选择的是微信公众号,然后选择一款自己开发框架,这里我选用的是Thinkphp5.1 Nginx环境(个人使用世界上最好的语言开发程序,Nginx Web服务器开发中经常使用到),如下图
按照步骤进行傻瓜式下一步操作即可,过于简单不做说明。创建成功,相应的mysql数据库信息通过微信发送到登录账户上面。也可以在控制台中找到。
三、简单使用
这里我只是简单的使用了一下,针对个人使用情况对产品提出一些意见和建议,仅代表个人观点。
1、使用
点击服务列表中的应用,进入应用详情页,点击 公网域名访问 ,进入默认首页位置。
这里我们可以看到官方给了一个演示页面,我们简单的看一下,使用一下,一个计数器功能,简单操作,让其计数值到3,方便演示。回到控制台中。点击云端调试,将请求方式更改GET,点击调试,看右侧返回结果,结果正确,这里面我们不去探究实现方式方法问题。我们看到接口端返回了PHP的版本问题。这个PHP版本问题正是我要说的问题。
2、问题
PHP版本号为PHP7.4,这里我们只看PHP的大版本号(结构和功能,漏洞修复咱不考虑),不知道在开发过程使用大家是否因为PHP版本的问题遇到了很多的代码兼容、语法错误等等一系列的问题。
代码语言:javascript复制PHP 7.4.x 废弃的功能
PHP 核心中废弃的功能
没有显式括号的嵌套三元运算符
嵌套的三元操作中,必须明确使用显式括号来决定操作的顺序。以前,如果不使用括号,在大多数情况下,左关联性不会导致预期的行为。
<?php
1 ? 2 : 3 ? 4 : 5; // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>
大括号访问数组和字符串索引
使用大括号访问数组及字符串索引的方式已被废弃。请使用 $var[$idx] 的语法来替代 $var{$idx}。
(real) 类型和 is_real() 函数
(real) 类型已被废弃,请使用 (float) 来替代。
同时被废弃的还有 is_real() 函数,请使用 is_float() 来替代。
Unbinding $this when $this is used
Unbinding $this of a non-static closure that uses $this is deprecated.
parent 关键词在没父类的类中使用
在没有父类的类中使用 parent 关键词已被废弃,并且在将来的 PHP 版本中将会抛出一个编译错误。目前只在运行时访问父类时才会产生错误。
allow_url_include INI 选项
配置文件中的 allow_url_include 选项被废弃。如果启用了该选项,将会产生一个弃用通知。
基础转换函数中的无效字符处理
在下面这些基础转换函数中,base_convert(), bindec(), octdec() 和 hexdec() 如果传入了非法字符,将会抛出一个弃用通知。函数会忽略掉无效字符后正常返回结果。前导空格和尾部空格,以及类型为 0x (取决于基数) 被允许传入。
在对象中使用 array_key_exists()
在一个对象中使用 array_key_exists() 已被废弃。请使用 isset() 或 property_exists() 来替代。
魔术引号函数
魔术引号函数 get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 已被废弃。它们将永远返回 false。
hebrevc() 函数
hebrevc() 函数已被废弃。 可以用 nl2br(hebrev($str)) 来替代,更好的方法是启用 Unicode RTL 来支持。
convert_cyr_string() 函数
convert_cyr_string() 函数已被废弃。可以用 mb_convert_string(), iconv() 或 UConverter 替代。
money_format() 函数
money_format() 函数已被废弃。 可以用更国际化的 NumberFormatter 功能来替代。
ezmlm_hash() 函数
ezmlm_hash() 函数已被废弃。
restore_include_path() 函数
restore_include_path() 函数已被废弃。可以用 ini_restore('include_path') 替代。
Implode 函数的参数顺序
implode() 允许反转参数顺序的特性已被废弃,请使用 implode($glue, $parts) 来替代 implode($parts, $glue)。
COM
导入类型库的大小写不敏感的常量注册已被废弃。
Filter
FILTER_SANITIZE_MAGIC_QUOTES 已被废弃,使用 FILTER_SANITIZE_ADD_SLASHES 来替代。
Multibyte String
Passing a non-string pattern to mb_ereg_replace() is deprecated. Currently, non-string patterns are interpreted as ASCII codepoints. In PHP 8, the pattern will be interpreted as a string instead.
Passing the encoding as 3rd parameter to mb_strrpos() is deprecated. Instead pass a 0 offset, and encoding as 4th parameter.
Lightweight Directory Access Protocol
ldap_control_paged_result_response() 和 ldap_control_paged_result() 函数已被废弃。控制页面操作可以使用 ldap_search() 替代。
Reflection
调用 ReflectionType::__toString() 现在将会抛出一个弃用通知。 该方法从 PHP 7.1 开始,在 ReflectionNamedType::getName() 的文档中已经被声明废弃,但是由于技术原因,并没有抛出弃用通知。
The export() methods on all Reflection classes are deprecated. Construct a Reflection object and convert it to string instead:
<?php
// ReflectionClass::export(Foo::class, false) is:
echo new ReflectionClass(Foo::class), "n";
// $str = ReflectionClass::export(Foo::class, true) is:
$str = (string) new ReflectionClass(Foo::class);
?>
Socket
常量 AI_IDN_ALLOW_UNASSIGNED 和 AI_IDN_USE_STD3_ASCII_RULES 在 socket_addrinfo_lookup() 中不再可用,因为该常量在 glibc 中已被废弃。
add a note add a note
User Contributed Notes 2 notes
up
down
14Ahmad Asjad ¶1 year ago
(?[^php]).*(:).*(?).*(:[^=])
Above regex can help others to find the nested ternary operator
up
down
-8Techlemur ¶1 year ago
^((?!().*)(?[^php]).*(:)([sv] )(?!().*[^/](?)([svh]*).*(:[^=])
Regex to find deprecated nested ternaries
这里我粘贴一下PHP7.4版本废弃的功能,大家可以看一下。避免在使用过程中出现问题。
我要说的问题,问题来了
1、PHP版本号暴露问题
攻击者可利用此信息,查找官方漏洞文档,并利用现有代码实施攻击。虽然是微信小程序端接口,公网地址相对安全,但是安全问题不可忽略。
解决方法:在PHP的配置文件中查找expose_php,将值设置为Off,PHP的版本显示将关闭。
2、PHP版本更换问题目前个人没有在控制台中看到可以更换PHP版本的操作位置,以thinkphp5.1为例,官方要求PHP >= 5.6.0,也就是意味着版本上面的可选择性很大。比如我们开发环境使用PHP7.0版本,而生成环境中是PHP7.4版本,在实际过程中就会因为版本问题导致出现各种意想不到的错误。这里大家可能会说为什么本地不能更改为PHP7.4呢,这种方式可以、也是可行的,但是我们不能因为某个项目安装一个版本,下一个项目继续另外的版本,相对来说我们通常使用使用某一版本作为日常开发通用版本。
解决方法:建议官方增加PHP版本切换功能,便于日常应用开发,提高开发速度。
3、Mysql版本
同样的版本选择问题,我创建的应用版本5.7版本,如果我想使用8.0版本为生产环境版本应该如何操作呢?
四、文末
1、微信云托管产品确实不错,在应用开发过程中access_token获取非常方便,提高了开发速度,同时小程序等开发文档中也提供了一些基于微信云托管的快捷代码。
2、关于上面提到了PHP版本和mysql版本问题可能是自己没有了解到或者因为个人知识面问题所引发的问题。
3、后续会继续深入了解微信云托管产品。
PS:在写这篇内容时不知道为什么登录的 账户一直在掉,大约10分钟就会被切换到ID9480520的账户中,严重影响了写作体验,不得不重新登录,如下图:
个人公网IP: 182.200.203.197,时间点:2022年2月21日上午10时