Sonata\Exporter\Writer\GsaFeedWriter::write PHP Метод

write() публичный Метод

public write ( array $data )
$data array
    public function write(array $data)
    {
        $line = sprintf("        <record url=\"%s\" mimetype=\"%s\" action=\"%s\"/>\n", $data['url'], $data['mime_type'], $data['action']);
        // + 18 corresponding to the length of the closing tags
        if ($this->bufferSize + strlen($line) + 18 > self::LIMIT_SIZE) {
            $this->generateNewPart();
        }
        $this->bufferSize += fwrite($this->buffer, $line);
    }

Usage Example

Пример #1
0
 /**
  * Tests the writer limit.
  */
 public function testLimitSize()
 {
     $writer = new GsaFeedWriter($this->folder, $this->dtd, $this->datasource, $this->feedtype);
     $writer->open();
     foreach (range(0, GsaFeedWriter::LIMIT_SIZE / 8196) as $i) {
         $writer->write(array('url' => str_repeat('x', 8196), 'mime_type' => 'text/html', 'action' => 'add'));
     }
     $writer->close();
     $generatedFiles = $this->getFiles();
     $this->assertCount(2, $generatedFiles);
     // this will throw an exception if the xml is invalid
     new \SimpleXMLElement(file_get_contents($generatedFiles[0]), LIBXML_PARSEHUGE);
     new \SimpleXMLElement(file_get_contents($generatedFiles[1]), LIBXML_PARSEHUGE);
     $info = stat($generatedFiles[0]);
     $this->assertLessThan(GsaFeedWriter::LIMIT_SIZE, $info['size']);
 }