コード例 #1
0
 public function process(Tracker $tracker, RequestSet $requestSet)
 {
     $requestSet->restoreEnvironment();
     $this->count = 0;
     foreach ($requestSet->getRequests() as $request) {
         try {
             $tracker->trackRequest($request);
             $this->count++;
         } catch (UnexpectedWebsiteFoundException $ex) {
             // empty
         }
     }
     $this->requestSetsToRetry[] = $requestSet;
 }
コード例 #2
0
 public function process(Tracker $tracker = null)
 {
     $tracker = $tracker ?: new Tracker();
     if (!$tracker->shouldRecordStatistics()) {
         return $tracker;
     }
     $request = new RequestSet();
     $request->rememberEnvironment();
     $loops = 0;
     try {
         while ($queue = $this->queueManager->lockNext()) {
             if ($loops > $this->numMaxBatchesToProcess) {
                 Common::printDebug('This worker processed ' . $loops . ' times, stopping now.');
                 break;
             } else {
                 $loops++;
             }
             $queuedRequestSets = $queue->getRequestSetsToProcess();
             if (!empty($queuedRequestSets)) {
                 $requestSetsToRetry = $this->processRequestSets($tracker, $queuedRequestSets);
                 $this->processRequestSets($tracker, $requestSetsToRetry);
                 $queue->markRequestSetsAsProcessed();
                 // TODO if markR..() fails, we would process them again later
             }
             $this->queueManager->unlock();
         }
     } catch (Exception $e) {
         Common::printDebug('Failed to process a request set: ' . $e->getMessage());
         $this->queueManager->unlock();
         $request->restoreEnvironment();
         throw $e;
     }
     $request->restoreEnvironment();
     return $tracker;
 }