/** * @test */ public function ifPersistenceEventReturnsCorrectObjects() { $document = $this->getMock('Simgroep\\ConcurrentSpiderBundle\\PersistableDocument'); $resource = $this->getMockBuilder('VDB\\Spider\\Resource')->disableOriginalConstructor()->getMock(); $metadata = ['core' => 'dummyCore']; $event = new PersistenceEvent($document, $resource, $metadata); $this->assertEquals($document, $event->getDocument()); $this->assertEquals($resource, $event->getResource()); $this->assertEquals($metadata, $event->getMetadata()); }
/** * Calculates what the desired revisit factor should be. * * @param \Simgroep\ConcurrentSpiderBundle\PersistenceEvent $event */ public function onPrePersistDocument(PersistenceEvent $event) { $newDocument = $event->getDocument(); $currentDocument = $this->indexer->findDocumentByUrl($newDocument['url'], $event->getMetadata()); if (null === $currentDocument || $currentDocument['revisit_after'] == 0) { $newDocument['revisit_after'] = $this->defaultRevisitFactor; $expireDate = new DateTime(); $expireDate->modify(sprintf('+%s minute', $newDocument['revisit_after'])); $newDocument['revisit_expiration'] = $expireDate->format('Y-m-d\\TH:i:s\\Z'); return; } if ($this->createDocumentChecksum($currentDocument) === $this->createDocumentChecksum($newDocument)) { $this->increaseRevisitFactor($newDocument, $currentDocument['revisit_after']); } else { $this->decreaseRevisitFactor($newDocument, $currentDocument['revisit_after']); } }