| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace app\api\controller;
- use app\index\model\GoodsModel;
- use app\index\service\Goods;
- use app\index\service\Grab;
- use app\index\service\PRedis;
- use think\Controller;
- class TaskController extends Controller
- {
- /**
- * 新品数据抓取
- */
- public function grabPublishGoods(){
- $result = Grab::instance()->grabData('nike_cn');
- showJson(1001, 1004, ['count'=> count($result),'result'=> $result]);
- }
- /**
- * 新品抓取数据处理
- */
- public function catchGrabGoods(){
- set_time_limit(0);
- $resource = input('r','nike_cn');
- try {
- $goodIds = [];
- $goodsList = [];
- $queenKey = "queens:grabs_{$resource}:goods_".date('YmdH');
- for($i=0; $i<50; $i++){
- $goodsInfo = PRedis::lpop($queenKey);
- $goodsInfo = $goodsInfo? json_decode($goodsInfo, true) : [];
- $productId = isset($goodsInfo['product_id'])? trim($goodsInfo['product_id']) : '';
- $cacheKey = "task:grabs_{$resource}:goods:".$productId;
- if($goodsInfo && !PRedis::get($cacheKey)){
- if(Goods::checkGoodsExists($productId)){
- PRedis::set($cacheKey, 1, 3600);
- continue;
- }
- $goodIds[] = $productId;
- $goodsList[] = $goodsInfo;
- PRedis::set($cacheKey, json_encode($goodsInfo, 256), 3600);
- }
- }
- // 入库
- if($goodsList){
- $res = GoodsModel::insertAll($goodsList);
- if(!$res){
- return showJson(1004, '处理抓取新品数据失败', "\n");
- }
- }
- $msg = "处理新品抓取数据结果,累计处理" . count($goodIds) . "个商品数据";
- return showJson(1005, $msg, "\n");
- } catch (\Exception $exception) {
- return showJson(1004, $exception->getMessage(), '', "\n");
- }
- }
- /**
- * 清楚缓存
- */
- public function clearGrabCache(){
- $resource = input('r','nike_cn');
- PRedis::delByKeys("grab:grabs_{$resource}:*");
- PRedis::delByKeys("task:grabs_{$resource}:*");
- return showJson(1005, '清理抓取新品数据缓存成功', "\n");
- }
- }
|