最近一个项目中,有一个读取某个文件夹下所有文件的功能。使用了ThinkPHP + layui,本地测试没有问题,到客户哪里发现速度奇慢,需要10秒以上才能读取完毕。 经沟通发现一个文件夹有1000+ 个文件,客户之前有一套asp的老系统,1000多个 文件也能实现秒开。。。
一时竟然没有头绪,难道 PHP 不如 ASP快 ??因为项目中代码太多,编写单独的代码测试。files/1000目录存放了 1428个文件测试。
最近一个项目中,有一个读取某个文件夹下所有文件的功能。使用了ThinkPHP + layui,本地测试没有问题,到客户哪里发现速度奇慢,需要10秒以上才能读取完毕。 经沟通发现一个文件夹有1000+ 个文件,客户之前有一套asp的老系统,1000多个 文件也能实现秒开。。。
一时竟然没有头绪,难道 PHP 不如 ASP快 ??因为项目中代码太多,编写单独的代码测试。files/1000目录存放了 1428个文件测试。
前几天 写的博客 多项目 函数库、类库 统一为一个版本的方法(http://tjcdfs.com/p/one-php)中提到 使用 one.php 将整个项目打包成 一个 php 文件,有网友 让我 整个asp版本的,今天下午抽空写了个 one.asp,使用方式基本一致,这次 增加了路径计算的功能,可以引用不同路径。
一个朋友有个很古老很古老的网站,使用了asp搭建,流量还很大,最近测试了下 WEB园,性能提升很大。需要改 session 为 cookie 方式保存 会话信息,让我给提 安全方面的建议。
实际 Session 和 Cookie 除了保存状态,安全方面都差不多。唯一需要注意的就是 不要 通过 cookie 保存 用户敏感信息(比如密码),防止中间人获取信息。密码加了md5也不安全,因为还有cmd5.com。另一个需要注意的就是 用户 可以通过 js 伪造 cookie信息。
以下面的例子为例: 继续阅读
注意:无论 PC、手机、还是微信内部,提交订单都通过点击PC支付按钮,程序会根据运行的环境自动调用对应的系统(C、手机、微信内部)。
支付类型 | PC开源版 | H5支付版 | JSSDK/JSAPI支付版 | 小程序版 |
---|---|---|---|---|
PC网站扫码支付 | 支持 | 支持 | 支持 | 支持 |
H5支付(手机浏览器) | 不支持 | 支持 | 支持 | 支持 |
JSSDK/JSAPI支付(微信内部) | 不支持 | 不支持 | 支持 | 支持 |
小程序支付 | 不支持 | 不支持 | 不支持 | 支持 |
是否收费 | 免费开源 | 捐赠158元获取源码 | 捐赠168元获取源码 | 捐赠188元获取源码 |
在 /order/payconfig.asp 中修改支付参数即可,记得把前边的 ‘ 给删掉哦~
'设置支付参数,也可以直接修改 WeChatPay.asp,不建议 'pay.AppID = "AppID" 'pay.AppSecret = "App密码" 'pay.MchID = "商户ID" 'pay.MchKey = "商户API密钥" 'pay.notifyUrl = "" 'notifyUrl不指定,则会自动根据当前环境判断
登录商户平台(http://pay.weixin.qq.com),找到账户设置 -> 密码安全 -> API安全 -> 下载证书(图上方框圈错了)
详细操作步骤可以参考微信官方教程:
登录服务号后台(http://mp.weixin.qq.com),登录后,在页面底部左侧找到 开发 -> 基本设置,进入基本设置页面后。可以看到 开发者ID(AppID) 和 开发者密码(AppSecret),点击重置,扫码后可以看到 AppSecret。如果需要 JSSDK/JSAPI支付,还需要在下面 IP白名单中 增加上 您的服务器的 IP地址。
登录商户平台(http://pay.weixin.qq.com),找到账户设置 -> 密码安全 -> API安全 -> API密钥
设置API密钥,把在微信后台复制的参数填写进去即可
之前使用了 微信提供的二维码页面,现在微信已经删除 此页面导致。
如果是最新的源码,按F12 打开 开发者工具,切换到 Network 选项,点击 XHR,重新刷新页面,会看到 wxapi.asp 的请求,点开后可以看到 返回信息。errMsg 就是错误的原因
按F12 打开 开发者工具,切换到 Network 选项,点击 XHR,重新刷新页面,会看到 wxapi.asp 的请求,点开后可以看到 返回信息,查看状态一直是 {status:false}。
因为微信支付的 服务器 无法 连接到 您的服务器。支付成功后,需要微信服务器给你 发送通知,才可以改变订单状态。
进入微信支付后台,打开 产品中心,找到 H5支付,点击开通就可以了。
进入微信支付后台,打开 产品中心。在我的产品或 开发设置中,找到 H5设置,填写 支付的域名就可以了。
进入微信支付后台,打开 产品中心,找到 JSAPI支付,点击开通就可以了。
需要设置两个地方,在微信服务号后台 和 微信支付后台分别设置:
3.3.1、微信服务号后台:
在页面底部左侧找到 开发 -> 基本设置,进入基本设置页面后。在下面 IP白名单中 增加上 您的服务器的 IP地址。
在页面底部左侧找到 开发 -> 接口设置, 找到 网页授权,点击修改。
修改 对应的 JS接口安全域名 和 网页授权域名 为 微信支付的网址
3.3.2、微信支付后台后台:
进入微信支付后台,打开 产品中心。在我的产品或 开发设置中,找到 公众号支付 设置,填写 支付的支付路径就可以了(注意:精确到路径,比如支付订单:http://wechatpay.demo.tjcdfs.com/order/pay.asp?order_no=201941115939934,需要填写:http://wechatpay.demo.tjcdfs.com/order/)。
通过小程序 WebView (必须认证后可用),可以实现将手机网站嵌入 小程序。
客户点击支付时,程序判断再 小程序中运行,如果在小程序中运行会通过 JSSDK 跳转到 小程序版 的支付页面( /pages/pay/pay )完成支付。支付成功后会返回 WebView(即你的手机站),通知客户支付成功。
4.2.1、服务器端程序:修改配置文件(小程序的配置文件,注意备份 )
set pay = new WeChatPay '设置支付参数,也可以直接修改 WeChatPay.asp pay.AppID = "AppID" pay.AppSecret = "App密码" pay.MchID = "商户ID" pay.MchKey = "商户API密钥" '在 微信支付后台 \ 帐户中心 \ API安全,设置 API密钥 中设置 pay.CertName = "MMPay" '如果本服务器只有一个站点使用微信支付,无须修改。部署多套请参考:http://tjcdfs.com/p/winhttpcertcfg-mmpay 'pay.notifyUrl = "" 'notifyUrl不指定,则会自动根据当前环境判断,如果修改了路径,必须修改 if IS_APP or Request.QueryString("client") = "wxapp" then pay.AppID = "小程序AppID" '小程序appid pay.AppSecret = "小程序密匙" '小程序密匙 end if
比其他版本多了下面最后4行代码,也可以不替换,将最后四行代码复制到 其他版本 payconfig.asp 的底部即可。
if IS_APP or Request.QueryString("client") = "wxapp" then pay.AppID = "小程序AppID" '小程序appid pay.AppSecret = "小程序密匙" '小程序密匙 end if
4.2.2、小程序部署:
4.2.2.1、首先需下载 微信开发者工具
下载地址:http://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
4.2.2.2、通过 微信开发者工具 导入源代码
输入小程序名称和申请的APPID,选择 小程序所在的目录(小程序版本压缩包中的 /app/ 目录为小程序目录)
4.2.3、修改配置文件 /pages/pay/config.js
按代码注释,修改:网站名称、网站五月色晴天图片、小程序接口、下单接口
网站名称:你的网站名称,用于加载您的网站五月色晴天图片前再标题栏显示
网站五月色晴天图片:你的网站名称,用于加载您的网站五月色晴天图片前再标题栏显示
小程序接口:用于实现小程序用户登录等。位于您的安装目录下的 wxapp.asp
下单接口:用于实现下单,返回支付信息。位于您的安装目录下的 wxapi.asp
export default { //网站名称 title:'网站名称', //网站五月色晴天图片 home: 'http://wechatpay.demo.tjcdfs.com/order/', //小程序接口 appApi: 'http://wechatpay.demo.tjcdfs.com/order/wxapp.asp', //下单接口 orderApi: 'http://wechatpay.demo.tjcdfs.com/order/wxapi.asp', }
4.2.4、在 微信开发者工具 右上方 点击 上传,按提示上传代码后,到小程序后台提交审核
等待审核通过后,就可以使用了。
有个朋友 做 某种小众音乐交换站的(他们那个行业的昵图网),需要用到付费下载。尝试过 防盗链,不太理想,最终使用了 Adodb.Stream 读取,直接输出。
解决了 盗版的问题,但是新的问题又来了。Adodb.Stream 这种方式 电脑还好说,大部分电脑浏览器都支持。移动端 很多 浏览器为了 加速读取,会多线程下载导致 文件无法正常读取。
抓包,发现增加了 HTTP头 HTTP_RANGE。隐约记得 之前读过 王大(王洪影)的 《深入解析 ASP核心技术》当中提到ASP多线程下载的问题,回家翻出来,最终还就真解决了。
为了 方便调用,直接写成了 一个 函数。没用王大的代码,感觉我自己的更美(自恋中…)。如有有需要的朋友需要,直接拿走即可,代码如下: 继续阅读