Mercurial > hg > ywww
comparison php/read/getBookDetails.php @ 21:46382face560
use a semaphore to try to cut down on RequestThrottled fails
| author | Charlie Root |
|---|---|
| date | Thu, 25 Oct 2018 09:42:12 -0400 |
| parents | c41a5802b26c |
| children | d606320ec331 |
comparison
equal
deleted
inserted
replaced
| 20:7679346abfdb | 21:46382face560 |
|---|---|
| 202 $timeout = 5; | 202 $timeout = 5; |
| 203 curl_setopt ($crl, CURLOPT_URL,$url); | 203 curl_setopt ($crl, CURLOPT_URL,$url); |
| 204 curl_setopt ($crl, CURLOPT_ENCODING , "gzip"); | 204 curl_setopt ($crl, CURLOPT_ENCODING , "gzip"); |
| 205 curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); | 205 curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); |
| 206 curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); | 206 curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); |
| 207 $gotit=0; | |
| 208 $requestIP = $_SERVER['REMOTE_ADDR']; | |
| 209 $semaphore = new SyncSemaphore("Amazon"); | |
| 210 $gotit = $semaphore->lock(4000); | |
| 211 if (!$gotit) { | |
| 212 file_put_contents('/var/ywww/debug/phpDebug', | |
| 213 "Got it: ".(int)$gotit." $requestIP 2\n",FILE_APPEND); | |
| 214 $gotit=$semaphore->lock(5000); | |
| 215 file_put_contents('/var/ywww/debug/phpDebug', | |
| 216 "Got it: ".(int)$gotit." $requestIP 2a\n",FILE_APPEND); | |
| 217 } | |
| 207 $out = curl_exec($crl); | 218 $out = curl_exec($crl); |
| 208 curl_close($crl); | 219 curl_close($crl); |
| 209 | 220 usleep(1000000); |
| 221 if ($gotit) { | |
| 222 $semaphore->unlock(); | |
| 223 } | |
| 224 else { | |
| 225 file_put_contents('/var/ywww/debug/phpDebug', | |
| 226 "W/o lock for $requestIP 2b\n",FILE_APPEND); | |
| 227 } | |
| 210 //echo $out; | 228 //echo $out; |
| 211 | 229 |
| 212 if (preg_match("<Error>",$out)) { | 230 if (preg_match("<Error>",$out)) { |
| 213 $xml = new SimpleXMLElement($out); | 231 $xml = new SimpleXMLElement($out); |
| 214 $resName=$xml->getName(); | 232 $resName=$xml->getName(); |
| 215 $code=$xml->Error->Code; | 233 $code=$xml->Error->Code; |
| 216 file_put_contents('/var/ywww/debug/phpDebug',"Losing gBD: $resName, $code\n",FILE_APPEND); | 234 $requestIP = $_SERVER['REMOTE_ADDR']; |
| 235 file_put_contents('/var/ywww/debug/phpDebug',"Losing gBD: $resName, $code, $requestIP\n",FILE_APPEND); | |
| 217 if ($code=='RequestThrottled') { | 236 if ($code=='RequestThrottled') { |
| 218 usleep(200000); // Try to reduce throttling until we get a | 237 usleep(200000); // Try to reduce throttling until we get a |
| 219 // principled solution in place | 238 // principled solution in place |
| 220 } | 239 } |
| 221 else { | 240 else { |
