PHP:阿里云OSS快速体验
项目有存储图像、需要。单靠云主机的弱鸡带宽肯定是撑不住的,所以考虑用对象储存服务。主打弹性成本带宽也管饱,还有一些额外的好处,下文説。下文流水账记录快速部署到可用的状态。其实官方文档已经有足够的信息只是版本有点杂,我需要多出相互比对测试了一番。所以下面这个也可以说是速通教程。
项目有存储图像、需要。单靠云主机的弱鸡带宽肯定是撑不住的,所以考虑用对象储存服务。主打弹性成本带宽也管饱,还有一些额外的好处,下文説。下文流水账记录快速部署到可用的状态。其实官方文档已经有足够的信息只是版本有点杂,我需要多出相互比对测试了一番。所以下面这个也可以说是速通教程。
前端看没有报错,但file_get_contents()返回了 null, 看服务端日志才发现这个提示。
以前也遇到过,备忘一下。当然改用 curl 也是不错的选择。
//$json_token = file_get_contents($url_accesstoken); //ssl报错
//修改方案,构造一个context参数,不验证ssl
$context = stream_context_create([
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false
]
]);
$json_token = file_get_contents($url_accesstoken,false,$context); //忽略报错,正确返回内容
客户要做代发微信红包的活动,无一例外地招来黑产的攻击盗刷作弊。
和黑产斗智斗勇内耗严重。
活动数据始终容易被伪造,所以思路最后还是落在增加他们的违法成本上,让其食之无味知难而退。
主要方式是针对可疑的IP建立黑名单机制,因为更换IP或者找寻特定地理位置的代理的IP成本极高,即使它们在目标地区,更换动态IP也能减缓其速度。
需求前提铺垫到此为止,以下是实现过程。
考虑到这种查库存在误差和过时失效等精确度的问题。IP归属地和 手机号码归属地进行结合判定,提高判断结果的可信程度。
先说结论:只要文件是同个文件,hash是一致的。
md5sum filepath
#md5sum 01000.chunk
ae2056ca156511f3a8223e2a4599b7bf 01000.chunk
md5_file(filename);
<?php
$file = "01000.chunk";
$md5 = md5_file($file);
var_dump($md5);
//string(32) "ae2056ca156511f3a8223e2a4599b7bf"
?>
这个稍微复杂点,要自己实现,而且执行起来效率貌似也有点低。不清楚为何,按理说所有方法都要读取完整文件效率应该相差不大才对,可能是我方法不对。
import hashlib
fname = "01000.chunk"
def md5_file(filename):
m = hashlib.md5() #创建md5对象
with open(filename,'rb') as fobj:
while True:
data = fobj.read(4096)
if not data:
break
m.update(data) #更新md5对象
return m.hexdigest()
hash = md5_file(fname)
print(hash, fname)
奇怪的错误,虽然表格内容有点大,2万多行50多列。但单线程理应不会吃掉128M内存
试过代码中非常保守地注销不必要的对象管控内存,依然不行。
解决方法:做了一个激进的预设
ini_set('memory_limit', '1024M');
终于运行通过了。
导出的xlsx文件只有2M,百思不得其解,不该吃掉128M内存啊?