下面是一个简单的数据库类,它是类的一部分,除了与我的问题相关的部分外,我删除了所有内容。
基本上,它允许我构建一个文件,其中包含在页面加载时运行的所有查询,包括它们所用的时间,它们的顺序,总计数,以及运行的实际SQL。这很好,但我遇到了麻烦。我无法写入该文件,您可以在下面看到我打印以屏蔽$ sss的值,这是应该写入文件的值。在PHP我有错误报告设置显示一切,我没有写错误或任何东西,它只是不写入文件,可能我可能有错误的文件夹上的文件,但我不确定。
那么将文件路径设置为日志文件并使其写入的好方法是什么?如果它现在找不到文件,我应该看到某种错误吗?
<?PHP
class Database
{
public $debug = true;
public $query_count = 0;
public $debug_file = "debug.sql";
public function query($sql){
//start timer stuff for debug logger
list($usec, $sec) = explode(" ",microtime());
$time_start = ((float)$usec + (float)$sec);
//run mysql query
$result = mysql_query($sql);
///debug
list($usec, $sec) = explode(" ",microtime());
$time_end = ((float)$usec + (float)$sec);
$time = $time_end - $time_start;
if($this->debug){
$this->query_count ++;
$f = fopen($this->debug_file, "a");
$sss = "# ".$this->query_count."\n ".$time." sec \n\n".$sql."\n#-------------------------------------------------------------------------\n\n";
// I print to screen just for test to see what should be wrriten to the file
echo $sss;
fputs($f, $sss, strlen($sss));
fclose($f);
}
//end debug
}
}
?>
答案 0 :(得分:3)
首先,我会使用file_put_contents(http://php.net/manual/en/function.file-put-contents.php),它实际上将所有这些调用捆绑成一个,可以帮助避免错误。
如果echo语句确实有效,我会检查是否有任何错误写入php日志文件,并仔细检查php.ini中的设置并让你记录警告。
另外,检查fopen()调用的返回值(它不应该是假的)......也许它失败了?