/** * Scan TSV file and return the keys, offsets and lengths of each line * * @param string $tsv * @param int[] $sortPositions * @param TsvSerializerInterface $serializer * @return array */ private function index($tsv, $sortPositions, $serializer) { $keys = array(); $offsets = array(); $lengths = array(); $resource = $this->fopen($tsv, "r"); $offset = $this->ftell($resource); while (($line = $serializer->fgets($resource)) !== FALSE) { if ($line == "\n") { continue; } $values = $serializer->unserialize($line); $keys[] = $this->constructKey($values, $sortPositions); $offsets[] = $offset; $lengths[] = ($newOffset = $this->ftell($resource)) - $offset; $offset = $newOffset; } $this->close($resource); return array($keys, $offsets, $lengths); }
private function tupleFromLine($line) { return $this->serializer->unserialize($line); }