客户有个业务是做二维码和条形码的,他的业务是每天晚上12点手动吧所有的二维码和条形码(图片)下载下来然后拿着压缩包去另外一个解析的平台 做解析 然后根据解析结果 给他们自己的客户打款
由于是项目初期 每天也就几百单 二维码数量大概 900张/天左右
但是在1核1G1M 的机器上 这就是灾难啊
于是开始优化
使用php-zbarcode
首先说明 环境必须是 php5的 因为PHP7的底层函数 不兼容 尝试着装了几次也没装上去扩展
然后
1.安装ImageMagick(www.imagemagick.org/)
yum install ImageMagick.x86_64 ImageMagick-devel.x86_64
2.安装zbar(sourceforge.net/projects/zb…)
wget jaist.dl.sourceforge.net/project/zba…
tar jxvf zbar-0.10.tar.bz2
cd zbar-0.10
#注意此步有大坑,要禁止gtk,python和qt的支持,不然你就等着无限报错吧 ./configure --without-gtk --without-python --without-qt --prefix=/usr/local/zbar
可能报错的话
./configure --without-gtk --without-python --without-qt --prefix=/usr/local/zbar --disable-video
make && make install
#提示如下为完成,不是报错
#make[2]: Leaving directory /root/zbar-0.10' #make[1]: Leaving directory/root/zbar-0.10'
#echo “/usr/local/zbar/lib/” >> /etc/ld.so.conf
ldconfig
ln -s /usr/local/zbar/lib/pkgconfig/zbar.pc /usr/lib64/pkgconfig/zbar.pc
3.安装php-zbarcode(github.com/mkoppanen/p…)
unzip php-zbarcode-master.zip
cd php-zbarcode-master
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#提示如下完成 #Build complete. #Don't forget to run 'make test'.
#Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
4.添加:extension=zbarcode.so 到php.ini配置文件
此时查看phpinfo();后搜索zbarcode后为完成
5.测试效果 图片取自https://en.wikipedia.org/wiki/File:Ean-13-5901234123457.png
scan($image); //循环输出二维码信息 if (!empty($barcode)) { foreach ($barcode as $code) { printf("Found type %s barcode with data %s\n", $code['type'], $code['data']); } } ?>这个过程是没啥问题的 但是同一时间 解析1000张码 还是时间比较长
此处采用redis的延时队列 设计
1 用户下单后 将id 跟 二维码的信息 image json_encode 后放入 延时队列
2 30分钟后 检测该订单 是否有效果 (用户没撤回 表示有效)
3 有效订单 直接扔入新的redis 队列 (解析二维码的队列)
4定时任务 push数据 并解析这个二维码 将解析的数据存入 一个新表 用订单id 关联 完事~!~~
作者:凌晨灬丶 来源:CSDN 原文:blog.csdn.net/zhaodongku/… 版权声明:本文为博主原创文章,转载请附上博文链接!