Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** Zend Framework** LICENSE** This source file is subject to version 1.0 of the Zend Framework* license, that is bundled with this package in the file LICENSE, and* is available through the world-wide-web at the following URL:* http://www.zend.com/license/framework/1_0.txt. If you did not receive* a copy of the Zend Framework license and are unable to obtain it* through the world-wide-web, please send a note to license@zend.com* so we can mail you a copy immediately.** @package Zend_Search_Lucene* @subpackage Storage* @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com)* @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0*//** Zend_Search_Lucene_Storage_File */require_once 'Zend/Search/Lucene/Storage/File.php';/** Zend_Search_Lucene_Exception */require_once 'Zend/Search/Lucene/Exception.php';/*** @package Zend_Search_Lucene* @subpackage Storage* @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com)* @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0**/class Zend_Search_Lucene_Storage_File_Filesystem extends Zend_Search_Lucene_Storage_File{/*** Resource of the open file** @var resource*/private $_fileHandle;/*** Class constructor. Open the file.** @param string $filename* @param string $mode*/public function __construct($filename, $mode='rb'){global $php_errormsg;$trackErrors = ini_get( "track_errors");ini_set('track_errors', '1');$this->_fileHandle = @fopen($filename, $mode);if ($this->_fileHandle===false) {ini_set('track_errors', $trackErrors);throw new Zend_Search_Lucene_Exception($php_errormsg);}ini_set('track_errors', $trackErrors);}/*** Sets the file position indicator and advances the file pointer.* The new position, measured in bytes from the beginning of the file,* is obtained by adding offset to the position specified by whence,* whose values are defined as follows:* SEEK_SET - Set position equal to offset bytes.* SEEK_CUR - Set position to current location plus offset.* SEEK_END - Set position to end-of-file plus offset. (To move to* a position before the end-of-file, you need to pass a negative value* in offset.)* Upon success, returns 0; otherwise, returns -1** @param integer $offset* @param integer $whence* @return integer*/public function seek($offset, $whence=SEEK_SET){return fseek($this->_fileHandle, $offset, $whence);}/*** Get file position.** @return integer*/public function tell(){return ftell($this->_fileHandle);}/*** Close File object*/public function close(){if ($this->_fileHandle !== null ) {@fclose($this->_fileHandle);$this->_fileHandle = null;}}/*** Get the size of the already opened file** @return integer*/public function size(){$position = ftell($this->_fileHandle);fseek($this->_fileHandle, 0, SEEK_END);$size = ftell($this->_fileHandle);fseek($this->_fileHandle,$position);return $size;}/*** Read a $length bytes from the file and advance the file pointer.** @param integer $length* @return string*/protected function _fread($length=1){if ($length == 0) {return '';}if ($length < 1024) {return fread($this->_fileHandle, $length);}$data = '';while ( $length > 0 && ($nextBlock = fread($this->_fileHandle, $length)) != false ) {$data .= $nextBlock;$length -= strlen($nextBlock);}return $data;}/*** Writes $length number of bytes (all, if $length===null) to the end* of the file.** @param string $data* @param integer $length*/protected function _fwrite($data, $length=null){if ($length === null ) {fwrite($this->_fileHandle, $data);} else {fwrite($this->_fileHandle, $data, $length);}}}