Welcome Guest, Not a member yet? Register   Sign In
Slow application, CodeIgniter Logs and Antivirus
#1

[eluser]tchule[/eluser]
Hello,

We have recently changed the antivirus we are using (from Norton to NOD32) and we have discovered that all our CodeIgniter applications were becoming very slow.

After some search, we've found out that the problem was that the Log class was opening and closing the log file for each line added, and the antivirus was scanning the file each time.

I'm done a very dirty hack that keep the file handler open between two logs, I'll post it here for info but it would be nice if a cleaner solution could be implemented in CodeIgniter.

Regards,

Code:
<?php if (!defined('BASEPATH'))
    exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 4.3.2 or newer
*
* @package        CodeIgniter
* @author        ExpressionEngine Dev Team
* @copyright    Copyright (c) 2008, EllisLab, Inc.
* @license        http://ellislab.com/codeigniter/user-guide/license.html
* @link        http://codeigniter.com
* @since        Version 1.0
* @filesource
*/

// ------------------------------------------------------------------------

/**
* Logging Class
*
* @package        CodeIgniter
* @subpackage    Libraries
* @category    Logging
* @author        ExpressionEngine Dev Team
* @link        http://ellislab.com/codeigniter/user-guide/general/errors.html
*/
class CI_Log {

    var $log_path;
    var $_threshold = 1;
    var $_date_fmt = 'Y-m-d H:i:s';
    var $_enabled = TRUE;
    var $_levels = array('ERROR' => '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4');
    var $currentDate;
    var $filehandler;

    /**
     * Constructor
     *
     * @access    public
     */
    function CI_Log() {
        $config =& get_config();

        $this->log_path = ($config['log_path'] != '') ? $config['log_path'] : BASEPATH.'logs/';

        if (!is_dir($this->log_path) OR !is_really_writable($this->log_path)) {
            $this->_enabled = FALSE;
        }

        if (is_numeric($config['log_threshold'])) {
            $this->_threshold = $config['log_threshold'];
        }

        if ($config['log_date_format'] != '') {
            $this->_date_fmt = $config['log_date_format'];
        }

        // Initialise the log file
        $this->createLogFile();
    }

    /**
     * Create a new log file.
     *
     * @return void
     */
    private function createLogFile() {
        $this->currentDate = date('Y-m-d'); // Store the date of the file
        $filepath = $this->log_path.'log-'.$this->currentDate.'.log';
        if (!$this->filehandler = @fopen($filepath, FOPEN_WRITE_CREATE)) {
            return FALSE;
        }
        @chmod($filepath, FILE_WRITE_MODE);
    }

    /**
     * Write Log File
     *
     * Generally this function will be called using the global log_message() function
     *
     * @access    public
     * @param    string    the error level
     * @param    string    the error message
     * @param    bool    whether the error is a native PHP error
     * @return    bool
     */
    function write_log($level = 'error', $msg, $php_error = FALSE) {
        if ($this->_enabled === FALSE) {
            return FALSE;
        }

        $level = strtoupper($level);

        if (!isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold)) {
            return FALSE;
        }

        if ($this->currentDate != date('Y-m-d')) {
            // Re-initialise the log file because we have changed the date
            $this->createLogFile();
        }

        $message = $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt).' --> '.$msg."\n";

        fwrite($this->filehandler, $message);

        return TRUE;
    }

    /**
     * Class destructor.
     */
    public function __destruct() {
        fclose($this->filehandler);
    }

}


Messages In This Thread
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 04-02-2010, 08:14 AM
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 04-02-2010, 03:16 PM
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 05-20-2010, 03:24 AM
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 05-20-2010, 04:09 AM
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 05-20-2010, 03:53 PM
Slow application, CodeIgniter Logs and Antivirus - by El Forum - 05-24-2010, 08:49 AM



Theme © iAndrew 2016 - Forum software by © MyBB