comparison xml/getAmazonInfo.php @ 23:d606320ec331

post-5.7-upgrade efforts to reduce dropped connections, db insertion fails
author Charlie Root
date Sun, 30 Dec 2018 07:00:09 -0500
parents 46382face560
children 828895488948
comparison
equal deleted inserted replaced
22:69c37b58d091 23:d606320ec331
111 curl_setopt ($crl, CURLOPT_URL,$url); 111 curl_setopt ($crl, CURLOPT_URL,$url);
112 curl_setopt ($crl, CURLOPT_ENCODING , "gzip"); 112 curl_setopt ($crl, CURLOPT_ENCODING , "gzip");
113 curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); 113 curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
114 curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); 114 curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
115 $semaphore = new SyncSemaphore("Amazon"); 115 $semaphore = new SyncSemaphore("Amazon");
116 $gotit = $semaphore->lock(4000); 116 $gotit = $semaphore->lock(1000);
117 if (!$gotit) { 117 if (!$gotit) {
118 file_put_contents('/var/ywww/debug/phpDebug', 118 file_put_contents('/var/ywww/debug/phpDebug',
119 "Got it: ".(int)$gotit." $requestIP 1\n",FILE_APPEND); 119 "Got it: ".(int)$gotit." $requestIP 1\n",FILE_APPEND);
120 $gotit=$semaphore->lock(5000); 120 $gotit=$semaphore->lock(1000);
121 file_put_contents('/var/ywww/debug/phpDebug', 121 file_put_contents('/var/ywww/debug/phpDebug',
122 "Got it: ".(int)$gotit." $requestIP 1a\n",FILE_APPEND); 122 "Got it: ".(int)$gotit." $requestIP 1a\n",FILE_APPEND);
123 } 123 }
124 $output = curl_exec($crl); 124 $output = curl_exec($crl);
125 curl_close($crl); 125 curl_close($crl);
126 usleep(1000000); 126 usleep(500000);
127 if ($gotit) { 127 if ($gotit) {
128 $semaphore->unlock(); 128 $semaphore->unlock();
129 } 129 }
130 else { 130 else {
131 file_put_contents('/var/ywww/debug/phpDebug', 131 file_put_contents('/var/ywww/debug/phpDebug',
134 $review = ""; 134 $review = "";
135 $review1 = ""; 135 $review1 = "";
136 $review2 = ""; 136 $review2 = "";
137 $review3 = ""; 137 $review3 = "";
138 // HST added this 138 // HST added this
139 if (preg_match("<Error>",$output)) { 139 $mm=array();
140 if (preg_match("<Error>",$output,$mm)) {
140 $xml = new SimpleXMLElement($output); 141 $xml = new SimpleXMLElement($output);
141 $resName=$xml->getName(); 142 $resName=$xml->getName();
142 $code=$xml->Error->Code; 143 $code=$xml->Error->Code;
143 file_put_contents('/var/ywww/debug/phpDebug',"Losing: $resName, $code, $requestIP, $requestURI\n",FILE_APPEND); 144 if (!$code) {
145 $code=$xml->Items->Request->Errors->Error->Code;
146 }
147 file_put_contents('/var/ywww/debug/phpDebug',"Losing: ".$mm[0].", $resName, $code, $requestIP, $requestURI\n",FILE_APPEND);
144 if ($code=='RequestThrottled') { 148 if ($code=='RequestThrottled') {
145 sleep(5); // Try to reduce throttling until we get a 149 usleep(200000); // Try to reduce throttling until we get a
146 // principled solution in place 150 // principled solution in place
147 } 151 }
148 else { 152 else {
149 file_put_contents('/var/ywww/debug/phpDebug',"parms: $go\nurl: $url\n". 153 file_put_contents('/var/ywww/debug/phpDebug',"parms: $go\nurl: $url\n".
150 print_r($parameters,TRUE)."\n",FILE_APPEND); 154 print_r($parameters,TRUE)."\n",FILE_APPEND);
176 if ($review != "") 180 if ($review != "")
177 { 181 {
178 $text = @file_get_contents($review . "&truncate=300"); 182 $text = @file_get_contents($review . "&truncate=300");
179 $removeTop1 = preg_replace('~<div class="crIFrameHeaderLeftColumn">(.*?)<div class="crIFrameHeaderHistogram">~si', '', $text); 183 $removeTop1 = preg_replace('~<div class="crIFrameHeaderLeftColumn">(.*?)<div class="crIFrameHeaderHistogram">~si', '', $text);
180 $removeTop2 = preg_replace('~<div class="crIFrameHeaderHistogram">(.*?)<div class="crIframeReviewList">~si', '', $text); 184 $removeTop2 = preg_replace('~<div class="crIFrameHeaderHistogram">(.*?)<div class="crIframeReviewList">~si', '', $text);
181 if (preg_match('~<body[^>]*>(.*?)</body>~si', $removeTop2, $body)){ $getBody = trim($body[1]); } 185 if (preg_match('~<body[^>]*>(.*?)</body>~si', $removeTop2, $body)){ $getBody = trim($body[1]); } else { $getBody = $removeTop2;}
182 $removeDiv = preg_replace('~<div[^>]*>(.*?)</div>~si', '', $getBody); 186 $removeDiv = preg_replace('~<div[^>]*>(.*?)</div>~si', '', $getBody);
183 $removeCloseDivs = preg_replace('/<\/div>/','', $removeDiv); 187 $removeCloseDivs = preg_replace('/<\/div>/','', $removeDiv);
184 $setBoundary = str_replace('<!-- BOUNDARY -->','BOTTOM-TOP', $removeCloseDivs); 188 $setBoundary = str_replace('<!-- BOUNDARY -->','BOTTOM-TOP', $removeCloseDivs);
185 //replace <!-- BOUNDARY --> with BOTTOM-TOP 189 //replace <!-- BOUNDARY --> with BOTTOM-TOP
186 $remove1 = '~<table cellpadding="0"(.*?)%">~s'; 190 $remove1 = '~<table cellpadding="0"(.*?)%">~s';
338 $g3 = "null"; 342 $g3 = "null";
339 $loop = 1; 343 $loop = 1;
340 344
341 foreach ($genArr as $key => $value) { 345 foreach ($genArr as $key => $value) {
342 //echo "$key => $value"; 346 //echo "$key => $value";
347 if ($key>2047) {
348 //HST added
349 break;
350 }
343 $queryG = "CALL b_addBrowseNode($key,\"$value\")"; //add the name value pair for genre to new table 351 $queryG = "CALL b_addBrowseNode($key,\"$value\")"; //add the name value pair for genre to new table
344 //echo $queryG; 352 //echo $queryG;
345 include "../../private/db.php"; 353 include "../../private/db.php";
346 $resG = mysqli_query($link, $queryG); 354 $resG = mysqli_query($link, $queryG);
347 mysqli_close($link); 355 mysqli_close($link);
398 $output .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; 406 $output .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
399 $output .= "<Details>"; 407 $output .= "<Details>";
400 if ( mysqli_num_rows( $res ) > 0 ) 408 if ( mysqli_num_rows( $res ) > 0 )
401 { 409 {
402 $rows=mysqli_fetch_array($res, MYSQLI_ASSOC); 410 $rows=mysqli_fetch_array($res, MYSQLI_ASSOC);
403 411 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop
404 $output .= "<ASIN>" . $searchparameterdata . "</ASIN>"; 412 $output .= "<ASIN>" . $searchparameterdata . "</ASIN>";
405 $output .= "<Title>" . htmlspecialchars($rows["Title"]) . "</Title>"; 413 $output .= "<Title>" . htmlspecialchars($rows["Title"]) . "</Title>";
406 $output .= "<Author>" . htmlspecialchars($rows["Author"]) . "</Author>"; 414 $output .= "<Author>" . htmlspecialchars($rows["Author"]) . "</Author>";
407 $output .= "<Binding>" . htmlspecialchars($rows["Binding"]) . "</Binding>"; 415 $output .= "<Binding>" . htmlspecialchars($rows["Binding"]) . "</Binding>";
408 $output .= "<Dewey>" . htmlspecialchars($rows["DeweyDecimal"]) . "</Dewey>"; 416 $output .= "<Dewey>" . htmlspecialchars($rows["DeweyDecimal"]) . "</Dewey>";
414 $output .= "<Genre2>" . htmlspecialchars($rows["Genre2"]) . "</Genre2>"; 422 $output .= "<Genre2>" . htmlspecialchars($rows["Genre2"]) . "</Genre2>";
415 $output .= "<Genre3>" . htmlspecialchars($rows["Genre3"]) . "</Genre3>"; 423 $output .= "<Genre3>" . htmlspecialchars($rows["Genre3"]) . "</Genre3>";
416 $output .= "<ProductGroup>Book</ProductGroup>"; 424 $output .= "<ProductGroup>Book</ProductGroup>";
417 $output .= "<Error>AccountLimitExceeded</Error>"; 425 $output .= "<Error>AccountLimitExceeded</Error>";
418 426
419 } 427 }
428 else {
429 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop
430 }
420 $output .= "</Details>"; 431 $output .= "</Details>";
421 echo $output; 432 echo $output;
422 } 433 }
423 } 434 }
424 435