function _getSize($p_len = null) { static $count = 0; if ($this->tarSize) { return; } $currentBlock = $this->_getOffset($p_len); while (strlen(parent::_readBlock($p_len))) { $this->_jumpBlock(1024); $tarSize = $this->_getOffset($p_len); if ($tarSize > 0) { $this->tarSize = $tarSize; } else { break; } if (++$count > 128) { $count = 0; $this->setState($this->resumeOffset); } } $this->_rewind(); $this->_jumpBlock($currentBlock); }