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 GetCertainOrder($ebay_account, $order_ids) { global $api_gco, $oa, $user; global $dbcon, $mctime, $defaultstoreid; $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"); } echo "抓取....\t"; while (1) { $responseXml = $api_gco->request($valid_order_ids); if (empty($responseXml)) { echo "Return Empty...Sleep 10 seconds.."; sleep(10); 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); 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; } $SellerOrderArray = $responseDoc->getElementsByTagName('Order'); //调用订单入库函数 __handle_ebay_orderxml($SellerOrderArray, $ebay_account); }