<?php
include_once dirname(dirname(__FILE__)).'/base/dealBase.php';

define('DEAL_FLAG', $argv[0]);
define('PROC_CODE', $argv[1]);

class getWeiboBehavior extends dealBase {

    private $task_key = _RQ_SPIDER_WEIBO_BEHAVIOR;

    public function setPara() {
        $this->spiderdaemon = SPIDER_WEIBO_BEHAVIOR;
        $this->processnum = $GLOBALS['DAEMON_NUMLIMIT'][SPIDER_WEIBO_BEHAVIOR];
    }

    public function deal() {
        $this->is_change_ip = false;

        $obj = new mSpider();
        $rdobj = $obj->initRedis();

        $ipinfo = $rdobj->get(_RC_SPIDER_USE_IP);
        $ipdata = json_decode($ipinfo, true);
        if (!$ipinfo && PROC_CODE == 0 && $rdobj->llen($this->task_key) + 0 > 0) {
            $ipdata = $obj->getZmhttpIp(_RC_SPIDER_USE_IP);
        }
        if (empty($ipdata)) {
            sleep(2);
            return false;
        }

        $obj->proxy_ip = $ipdata['ip'];
        $obj->proxy_port = $ipdata['port'];

        $rq_data = $rdobj->rpop($this->task_key);
        if (empty($rq_data)) exit;

        $baselog = $rq_data . "|" . $ipdata['ip'] . "|" . $ipdata['port'] . "|" . PROC_CODE . "|";

        //数据格式不正确
        $data = json_decode($rq_data, true);
        if(empty($data['type']) || empty($data['uid']) || empty($data['page']) || empty($data['date'])) return false;

        //队列数据已过期
        $date = date("Y-m-d");
        if($data['date'] != $date) return false;

        $cookie = $rdobj->get(_RC_WEIBO_LOGIN_COOKIE);
        if(empty($cookie)) $cookie = WEIBO_LOGIN_COOKIE;

        if($data['type'] == 1){
            //原创数据
            $res = $obj->spiderBehaviorOriginalData($cookie, $data['uid'], $data['page']);
        }else{
            //转发数据
            $res = $obj->spiderBehaviorForwardData($cookie, $data['uid'], $data['page']);
        }

        if (!$res) {
            $error = $obj->getError();
            if($error == 'cookie失效') {
                $obj->sendMail(array('1026652509@qq.com'), date('Y年m月d日', time()) . '-微博数据抓取', $error);
                $rdobj->del($this->task_key);
                exit;
            }
            if ($obj->is_change_ip) {
                // 0进程监控更换ip
                if (PROC_CODE == 0) $rdobj->del(_RC_SPIDER_USE_IP);
            }
            $obj->writeLog('spider', $this->spiderdaemon.'_fail.log', $baselog.$error);
            $rdobj->lpush($this->task_key, $rq_data);
            return false;
        }

        $obj->writeLog('spider', $this->spiderdaemon . '_success.log', $baselog);
        return true;
    }
}

new getWeiboBehavior();