public function stream_read($count) { $result = parent::stream_read($count); if (is_callable($this->readCallback)) { call_user_func($this->readCallback, $count); } return $result; }
public function stream_read($count) { $result = parent::stream_read($count); $bytesReceived = strlen($result); while (strlen($result) > 0 && $bytesReceived < $count && !$this->stream_eof()) { $result .= parent::stream_read($count - $bytesReceived); $bytesReceived = strlen($result); } return $result; }
protected function readTill($position) { $current = ftell($this->source); if ($position > $current) { $data = parent::stream_read($position - $current); $cachePosition = ftell($this->cache); fseek($this->cache, $current); fwrite($this->cache, $data); fseek($this->cache, $cachePosition); } }