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; }
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); }
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); }