function MakeHtml( $key = '' )
{
if (empty($_POST))
{
$this->_strHtmlFileName = $this->_strHtmlDir . md5($_SERVER['REQUEST_URI'] . serialize($key)) . '.html';
if (($_SERVER['HTTP_CACHE_CONTROL'] != 'no-cache') && ($_SERVER['HTTP_PRAGMA'] != 'no-cache') && @is_file($this->_strHtmlFileName))
{
if ((time() - filemtime($this->_strHtmlFileName)) < $this->_intCacheLifeTime)
{
readfile($this->_strHtmlFileName);
exit;
}
}
ob_start( array(&$this , 'Callback') ) ;
}
}
function Callback ( $Buffering )
{
$this->Check_Dir( $this->_strHtmlDir ) ;
if ($hd = @fopen($this->_strHtmlFileName , "wb"))
{
fwrite( $hd , $Buffering );
fclose( $hd ) ;
}
else
{
$Buffering = 'failed to open HTML file "' . $this->_strHtmlFileName . '"';
}
return $Buffering ;
}以上是我在模板类里面生成HTML页面缓存的函数,但是在Callback的时候创建文件的时候出现问题。
具体问题是:1,$this->Check_Dir( $this->_strHtmlDir ) 这个是检查文件夹,没有则mkdir(),但发现根本不起作用,不能创建文件夹。
2,if ($hd = @fopen($this->_strHtmlFileName , "wb"))的时候没有报错,并且IF成立,既然IF成立,那么文件应该是创建成功了吧。查看路径,没有文件存在。调试:
1,把$this->_strHtmlFileName随便改下(去掉后面一个“e”),if不成立了,执行else;
2, 把@去掉,效果一样。不会报错。还是一样,IF成立。
3,把$this->_strHtmlFileName直接RETURN,有输出正确路径。疑思:
这个是生成HTML的函数,用OB_START方式,是不是回调的时候不能用这样的方式呢?同样在这个CLASS里面,我还有个CACHE函数,这个是生成缓存的,同样我也是用FOPEN来创建写入CACHE文件,完全正常,创建文件夹,创建文件,写入缓存等都很正常。是不是在回调函数里面要特定的写法?求大家赐教!
{
if (empty($_POST))
{
$this->_strHtmlFileName = $this->_strHtmlDir . md5($_SERVER['REQUEST_URI'] . serialize($key)) . '.html';
if (($_SERVER['HTTP_CACHE_CONTROL'] != 'no-cache') && ($_SERVER['HTTP_PRAGMA'] != 'no-cache') && @is_file($this->_strHtmlFileName))
{
if ((time() - filemtime($this->_strHtmlFileName)) < $this->_intCacheLifeTime)
{
readfile($this->_strHtmlFileName);
exit;
}
}
ob_start( array(&$this , 'Callback') ) ;
}
}
function Callback ( $Buffering )
{
$this->Check_Dir( $this->_strHtmlDir ) ;
if ($hd = @fopen($this->_strHtmlFileName , "wb"))
{
fwrite( $hd , $Buffering );
fclose( $hd ) ;
}
else
{
$Buffering = 'failed to open HTML file "' . $this->_strHtmlFileName . '"';
}
return $Buffering ;
}以上是我在模板类里面生成HTML页面缓存的函数,但是在Callback的时候创建文件的时候出现问题。
具体问题是:1,$this->Check_Dir( $this->_strHtmlDir ) 这个是检查文件夹,没有则mkdir(),但发现根本不起作用,不能创建文件夹。
2,if ($hd = @fopen($this->_strHtmlFileName , "wb"))的时候没有报错,并且IF成立,既然IF成立,那么文件应该是创建成功了吧。查看路径,没有文件存在。调试:
1,把$this->_strHtmlFileName随便改下(去掉后面一个“e”),if不成立了,执行else;
2, 把@去掉,效果一样。不会报错。还是一样,IF成立。
3,把$this->_strHtmlFileName直接RETURN,有输出正确路径。疑思:
这个是生成HTML的函数,用OB_START方式,是不是回调的时候不能用这样的方式呢?同样在这个CLASS里面,我还有个CACHE函数,这个是生成缓存的,同样我也是用FOPEN来创建写入CACHE文件,完全正常,创建文件夹,创建文件,写入缓存等都很正常。是不是在回调函数里面要特定的写法?求大家赐教!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货