Beispiel #1
0
 function GetCertainOrder($ebay_account, $order_ids = array())
 {
     global $rabbitMQClass;
     //var_dump(CommonModel::getTransCarrierInfo()); exit;
     //var_dump(CommonModel::calcAddOrderShippingFee2($arr)); exit;
     //var_dump(CommonModel::getMaterInfo('59')); exit;//获取包材信息
     //var_dump(CommonModel::getSkuinfo('TK0307')); exit;
     //var_dump(CommonModel::getCombineSkuinfo('TK_CB94')); exit;
     //CommonModel::calcAddOrderWeight();exit;
     if (empty($order_ids)) {
         $exchange = 'ebay_order_id_queue_' . $ebay_account;
         $queue = 'ebay_from_queue_' . $ebay_account;
         $order_ids = $rabbitMQClass->queue_subscribe($exchange, $queue);
         echo "已接收队列中 " . count($order_ids) . " 条数据\n";
     }
     $count_order_ids = count($order_ids);
     if ($count_order_ids == 0) {
         return false;
     }
     $valid_order_ids = array();
     $invalid_order_ids = array();
     $has_invalid_order_id = false;
     $order_p1 = '#^\\d{12}$#i';
     //multiple line item order
     $order_p2 = '#^\\d{12}\\-\\d{12,14}$#i';
     //single line item order
     $order_p3 = '#^\\d{12}\\-0$#i';
     //single line item order(sometimes trans id is zero)
     if (is_array($order_ids)) {
         foreach ($order_ids as $orderid) {
             if (preg_match($order_p1, $orderid) || preg_match($order_p2, $orderid) || preg_match($order_p3, $orderid)) {
                 $valid_order_ids[] = $orderid;
             } else {
                 $invalid_order_ids[] = $orderid;
                 $has_invalid_order_id = true;
             }
         }
     } else {
         if (preg_match($order_p1, $order_ids) || preg_match($order_p2, $order_ids) || preg_match($order_p3, $order_ids)) {
             $valid_order_ids[] = $order_ids;
         } else {
             $invalid_order_ids[] = $order_ids;
             $has_invalid_order_id = true;
         }
     }
     if ($has_invalid_order_id === true) {
         exit("Error: Pass invalid ebay order id[" . implode(',', $invalid_order_ids) . "]\n");
     }
     //分页抓取.---------------------------------------------------------------------
     $count = 0;
     $per_page_ids = array();
     //var_dump($valid_order_ids);
     foreach ($valid_order_ids as $per_id) {
         $page = ceil($count / 50);
         //echo $page;
         $per_page_ids[$page][] = $per_id;
         $count++;
     }
     //var_dump($per_page_ids);
     //exit;
     echo "抓取....\t";
     foreach ($per_page_ids as $per_ids) {
         while (1) {
             $responseXml = $this->request($per_ids);
             if (empty($responseXml)) {
                 echo "Return Empty...Sleep 5 seconds..";
                 sleep(5);
                 continue;
             }
             //网络出现代理Proxy error 脚本休眠20秒
             $poxy_error_p = '#Proxy\\s*Error#i';
             if (preg_match($poxy_error_p, $responseXml)) {
                 echo "Proxy Error...Sleep 10 seconds..";
                 sleep(10);
                 continue;
             }
             break;
         }
         echo "\n";
         $responseDoc = new DomDocument();
         $responseDoc->loadXML($responseXml);
         $raw_data_filename = EBAY_RAW_DATA_PATH . $ebay_account . '/certain_order/' . date('Y-m') . '/' . date('d') . '/' . date('Y-m-d_H-i-s') . '.xml';
         $save_res = save_ebay_raw_data($raw_data_filename, $responseXml);
         if ($save_res !== false) {
             echo "save raw data ok...\n";
         } else {
             echo "save raw data fail...\n";
         }
         $responseXml = null;
         unset($responseXml);
         //$TotalNumberOfPages	 	= $responseDoc->getElementsByTagName('TotalNumberOfPages')->item(0)->nodeValue;
         //$TotalNumberOfEntries	= $responseDoc->getElementsByTagName('TotalNumberOfEntries')->item(0)->nodeValue;
         //$hasmore 	= $responseDoc->getElementsByTagName('HasMoreOrders')->item(0)->nodeValue;
         $Ack = $responseDoc->getElementsByTagName('Ack')->item(0)->nodeValue;
         $pcount = 1;
         echo "同步状态: {$Ack} \n";
         if ($Ack == 'Failure') {
             echo "eBay Return Failure...return.. \n";
             return "eBay Return Failure...return..";
         }
         $SellerOrderArray = $responseDoc->getElementsByTagName('Order');
         //调用订单入库函数
         $message = $this->__handle_ebay_orderxml($SellerOrderArray, $ebay_account);
     }
     //return $message;
 }
Beispiel #2
0
function GetSellerOrders($ebay_starttime, $ebay_endtime, $ebay_account, $type, $id)
{
    global $api_go, $oa, $user;
    global $dbConn, $mctime, $defaultstoreid;
    $pcount = 1;
    $errors = 1;
    do {
        echo "抓取....\t";
        $responseXml = $api_go->request($ebay_starttime, $ebay_endtime, $pcount);
        if (empty($responseXml)) {
            echo "Return Empty...Sleep 10 seconds..";
            sleep(10);
            $hasmore = true;
            continue;
        }
        //网络出现代理Proxy error 脚本休眠20秒
        $poxy_error_p = '#Proxy\\s*Error#i';
        if (preg_match($poxy_error_p, $responseXml)) {
            echo "Proxy Error...Sleep 20 seconds..";
            sleep(20);
            $hasmore = true;
            continue;
        }
        echo "\n";
        $responseDoc = new DomDocument();
        $responseDoc->loadXML($responseXml);
        //保存原始raw数据
        $raw_data_path = EBAY_RAW_DATA_PATH . $ebay_account . '/date_range_order/' . date('Y-m') . '/' . date('d') . '/';
        $raw_data_filename = str_replace(':', '-', $ebay_starttime) . '--' . str_replace(':', '-', $ebay_endtime) . '--p' . $pcount . '.xml';
        $raw_data_filename = $raw_data_path . $raw_data_filename;
        $save_res = save_ebay_raw_data($raw_data_filename, $responseXml);
        if ($save_res !== false) {
            echo "save raw data ok...\n";
        } else {
            echo "save raw data fail...\n";
        }
        $responseXml = null;
        unset($responseXml);
        $TotalNumberOfPages = $responseDoc->getElementsByTagName('TotalNumberOfPages')->item(0)->nodeValue;
        $TotalNumberOfEntries = $responseDoc->getElementsByTagName('TotalNumberOfEntries')->item(0)->nodeValue;
        $hasmore = $responseDoc->getElementsByTagName('HasMoreOrders')->item(0)->nodeValue;
        $Ack = $responseDoc->getElementsByTagName('Ack')->item(0)->nodeValue;
        echo "正在请求:{$pcount}/{$TotalNumberOfPages}\t记录数[ {$TotalNumberOfEntries} ]\t同步状态: {$Ack} 还有更多:{$hasmore}\n";
        if ($id == '' && $type == '1') {
            if ($Ack == 'Failure') {
                $ss = "insert into errors_ack(ebay_account,starttime,endtime,status,notes) \n\t\t\t\t\t\t\tvalues('{$ebay_account}','{$ebay_starttime}','{$ebay_endtime}','0','Ack False')";
                $dbConn->query($ss);
            }
        }
        if ($id > 0) {
            if ($Ack == 'Success' || $Ack == 'Warning') {
                $gg = "update errors_ack set status = 1 where id='{$id}' ";
            } else {
                $gg = "update errors_ack set status = 0 where id='{$id}' ";
            }
            $dbConn->query($gg);
        }
        /**/
        $log_name = '同步订单bygo';
        $log_operationtime = $mctime;
        $log_notes = $ebay_account . ":{$pcount}/{$TotalNumberOfPages} ,Ack={$Ack}";
        addlogs($log_name, $log_operationtime, 0, $log_notes, $user, $ebay_account, $ebay_starttime, $ebay_endtime, $type);
        /**/
        $SellerOrderArray = $responseDoc->getElementsByTagName('Order');
        //调用订单入库函数
        __handle_ebay_orderxml($SellerOrderArray, $ebay_account);
        $SellerOrderArray = null;
        unset($SellerOrderArray);
        if ($id == '' && $type == '1') {
            if ($Ack == '' || $Ack == 'Failure') {
                $ss = "insert into errors_ack(ebay_account,starttime,endtime,status,notes,currentpage) \n\t\t\t\t\t\t\tvalues('{$ebay_account}','{$ebay_starttime}','{$ebay_endtime}','0','Ack False','{$pcount}')";
                $dbConn->query($ss);
            }
        }
        if ($pcount >= $TotalNumberOfPages) {
            echo $hasmore . "程序退出了\n";
            break;
        }
        $pcount++;
        $hasmore = strtolower($hasmore) == 'true' ? true : false;
    } while ($hasmore);
}
Beispiel #3
0
function GetSellerOrdersID($ebay_starttime, $ebay_endtime, $ebay_account)
{
    global $api_goi, $oa, $user;
    global $dbcon, $mctime, $defaultstoreid;
    $pcount = 1;
    $errors = 1;
    $execution_frequency = 0;
    do {
        echo "抓取订单ID....\t";
        $responseXml = $api_goi->request($ebay_starttime, $ebay_endtime, $pcount);
        if (empty($responseXml)) {
            echo "ReturnEmpty...Sleep 10 seconds..";
            sleep(10);
            $hasmore = true;
            continue;
        }
        //网络出现代理Proxy error 脚本休眠20秒
        $poxy_error_p = '#Proxy\\s*Error#i';
        if (preg_match($poxy_error_p, $responseXml)) {
            echo "ProxyError...Sleep 20 seconds..";
            sleep(20);
            $hasmore = true;
            continue;
        }
        echo "\n";
        $responseDoc = new DomDocument();
        $responseDoc->loadXML($responseXml);
        $TotalNumberOfPages = $responseDoc->getElementsByTagName('TotalNumberOfPages')->item(0)->nodeValue;
        $TotalNumberOfEntries = $responseDoc->getElementsByTagName('TotalNumberOfEntries')->item(0)->nodeValue;
        $hasmore = $responseDoc->getElementsByTagName('HasMoreOrders')->item(0)->nodeValue;
        $Ack = $responseDoc->getElementsByTagName('Ack')->item(0)->nodeValue;
        echo "正在请求订单ID:{$pcount}/{$TotalNumberOfPages}\t记录数[ {$TotalNumberOfEntries} ]\t";
        echo "同步状态: {$Ack} 还有更多:{$hasmore}\n";
        if ($Ack == 'Failure') {
            $execution_frequency++;
            echo "eBayRequestFailure...Sleep 10 seconds then request again...\n";
            sleep(10);
            $hasmore = $execution_frequency < 3 ? true : false;
            continue;
        } else {
            //保存原始raw数据
            $raw_data_path = EBAY_RAW_DATA_PATH . $ebay_account . '/date_range_orderid/' . date('Y-m') . '/' . date('d') . '/';
            $raw_data_filename = str_replace(':', '-', $ebay_starttime) . '--' . str_replace(':', '-', $ebay_endtime) . '--p' . $pcount . '.xml';
            $raw_data_filename = $raw_data_path . $raw_data_filename;
            $save_res = save_ebay_raw_data($raw_data_filename, $responseXml);
            if ($save_res !== false) {
                echo "save raw data ok...\n";
            } else {
                echo "save raw data fail...\n";
            }
            $responseXml = null;
            unset($responseXml);
        }
        $execution_frequency = 0;
        /**/
        $SellerOrderArray = $responseDoc->getElementsByTagName('Order');
        //调用订单ID入队列函数
        __handle_ebay_orderidxml($SellerOrderArray, $ebay_account);
        $SellerOrderArray = null;
        unset($SellerOrderArray);
        if ($pcount >= $TotalNumberOfPages) {
            echo $hasmore . "程序退出了\n";
            break;
        }
        $pcount++;
        $hasmore = strtolower($hasmore) == 'true' ? true : false;
    } while ($hasmore);
}