在1核1G1M的机器上做二维码条形码识别的产品优化

   客户有个业务是做二维码和条形码的,他的业务是每天晚上12点手动吧所有的二维码和条形码(图片)下载下来然后拿着压缩包去另外一个解析的平台 做解析 然后根据解析结果 给他们自己的客户打款

  由于是项目初期 每天也就几百单 二维码数量大概 900张/天左右

但是在1核1G1M 的机器上 这就是灾难啊

于是开始优化 

使用php-zbarcode

首先说明 环境必须是 php5的 因为PHP7的底层函数 不兼容 尝试着装了几次也没装上去扩展

 

然后 

1.安装ImageMagick(http://www.imagemagick.org/)

yum install ImageMagick.x86_64 ImageMagick-devel.x86_64

2.安装zbar(http://sourceforge.net/projects/zbar/?source=directory)

 wget http://jaist.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.bz2

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(https://github.com/mkoppanen/php-zbarcode)

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
<?php
    //新建一个图像对象
    $image = new ZBarCodeImage("./test.png");

    // 创建一个二维码识别器
    $scanner = new ZBarCodeScanner();

    //识别图像
    $barcode = $scanner->scan($image);

    //循环输出二维码信息
    if (!empty($barcode)) {
        foreach ($barcode as $code) {
            printf("Found type %s barcode with data %s\n", $code['type'], $code['data']);
        }
    }
?>
原文:https://blog.youkuaiyun.com/jianai0602/article/details/80190351 
 

这个过程是没啥问题的 但是同一时间 解析1000张码 还是时间比较长 

此处采用redis的延时队列 设计

1 用户下单后 将id 跟 二维码的信息 image  json_encode 后放入 延时队列

2  30分钟后 检测该订单 是否有效果 (用户没撤回 表示有效)

3 有效订单 直接扔入新的redis 队列 (解析二维码的队列) 

4定时任务 push数据 并解析这个二维码 将解析的数据存入  一个新表  用订单id 关联 完事~!~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值