< ? php
//简单的抽奖算法
//prob概率 总和为1k , 10k , 100k,自己设 id为具体奖品
$data = [[‘prob’ =–> 6000 , ‘id’ => 1],
[‘prob’ => 16500 , ‘id’ => 2],
[‘prob’ => 16500 , ‘id’ => 3],
[‘prob’ => 900 , ‘id’ => 4],
[‘prob’ => 700 , ‘id’ => 5],
[‘prob’ => 59000 , ‘id’ => 6],
[‘prob’ => 200 , ‘id’ => 7],
[‘prob’ => 200 , ‘id’ => 8],
];

//抽奖概率

if(count($data) == 1){
$gift = $data[0];
}else{
//抽奖概率
$prob_arr = [];
$proSum = array_sum(array_column($data,’prob’)); //概率总数目 千级 万级

//计算1 推荐 10w内存消耗5M
foreach ($data as $dk => $dg) {
for($i=0;$i<$dg[‘prob’];$i++){ $prob_arr[] = $dk; } } //计算2 这种的内存消耗是1的2倍 时间消耗是1的4倍(10w测试,内存消耗10M) 并且概率总数越大,差别越大 这个不要用 // foreach ($data as $dk => $dg) {
// $prob_arr = array_merge($prob_arr,array_fill(0,$dg[‘prob’],$dk));
// }

shuffle($prob_arr);//打乱数组
$prob_id = $prob_arr[mt_rand(0,$proSum-1)];

//抽奖概率结束
$gift = $data[$prob_id];
}

//本机联想E470测试结果如下

//0.000700 ~ 0.000200 ,内存使用189k 总和1k
//0.001400 ~ 0.004400 ,内存使用706k 总和10k
//0.040100 ~ 0.024300 ,内存使用5M 总和100k

后续优化

苹果手机6sp使用Fiddler抓包工具,一下是版本信息

Progress Telerik Fiddler Web Debugger

v5.0.20181.14850 for .NET 4.6.1
Built: 2018年3月20日

64-bit AMD64, VM: 117.0mb, WS: 167.0mb
.NET 4.6.2 WinNT 10.0.17134.0

You’ve run Progress Telerik Fiddler: 31 times.

Running on: desktop-ajo3da9:8888
Listening to: All Adapters
Gateway: Auto-Config

1.Fiddler安装好之后开启https

依次打开 tools – Options -https 如下设置

2.在iPhone上设置-wi-fi 配置代理

 

webview里的支付宝H5链接调起支付宝
这是不使用支付宝SDK的方案,老接口版本,支付宝调起客户端的问题:
.H5如何调起客户端支付宝,并且回调?
1.需要先我们用的是老接口还是新接口,对应的H5链接支持才可以。
若接入的是新版本手机网站支付接口(alipay.trade.wap.pay),用户在安装支付宝钱包的情况下,调用手机网站支付接口默认会唤起钱包支付;若接入的是手机网站支付老版本(alipay.wap.create.direct.pay.by.user ),那么需要在请求参数中加入app_pay参数并赋值为Y,详情参见 手机网站支付老版本文档;37用的是H5链接是老的,所以需要需要加入app_pay为Y的参数。
2.在上面支持之后,在我们的webview还是不能直接调起对应的app。我们需要拦截alipay://的请求,并且通过openURL的方式打开对应的app。需要注意白名单的问题。
3.最后就是要处理回调的问题,我的方案是在openurl里面处理的,拦截替换对应的参数。
.为什么支付宝的demo还是会报错?
我们首先需要搞清楚,我们的是旧接口,还是新接口。如果你的demo是新的,但是只签约了旧方法,只配置了旧的公私钥,那么当然就会有问题。
以上转载 https://www.jianshu.com/p/178638156466
‘app_pay’=>’Y’,//此行是调起支付宝app的

这个错误是gd库出了问题,一般是gd库在安装的时候没有编译freetype。我的解决方案是重新编译php,或者在编译PHP的时候不安装gd,后期安装动态链接库。我用的是lnmp一键安装包,环境是 deepin 15.7 。在安装php7.2的时候一直有报错。

1.首先是libcurl.so4报错。

解决方案是 sudo apt-get libcurl4 libcurl4-dev

2.是gd库报错,找了半天也没找到办法,索性编译时候去掉了gd库。

但是项目实在需要gd库,只能手动的编译,在编译的时候需要freetype。

刚开始我没有用freetype直接编译,就出现了致命错误: Call to undefined function think\captcha\imagettftext()

我在/usr/local 中发现freetype。但是好像不能工作,我就直接rm掉了

手动安装了freetype 当然还是这个目录了

接下来在php源码中 找到 ext/gd 重新安装

/path/phpize

./configure –with-php-config=/usr/local/php/bin/php-config –with-freetype-dir=/usr/local/freetype/

make

sudo make install

PHP配置加上 gd.so 重启php-fpm 解决问题