Не удается получить PHP для записи в файл - PullRequest
0 голосов
/ 18 января 2010

Ниже приведен простой класс базы данных, а также его часть, я удалил все, кроме частей, связанных с моим вопросом.

По сути, это позволит мне создать файл со всеми запросами, которые были выполнены при загрузке страницы с учетом времени, которое они заняли, порядка, в котором они находятся, общего количества, а затем также фактического 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
    }
}
?>

1 Ответ

3 голосов
/ 18 января 2010

Прежде всего, я бы использовал file_put_contents (http://php.net/manual/en/function.file-put-contents.php),, по сути, он объединяет все эти вызовы в один и может помочь избежать ошибок.

Если оператор echo действительно работает, я бы проверил наличие ошибок, записываемых в файл журнала php, и дважды проверил ваши настройки в php.ini и заставил вас записывать предупреждения.

Кроме того, проверьте возвращаемое значение вызова fopen () (оно не должно быть ложным) ... возможно, его сбой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...