1
RiazShahid
Which thing is slowing my web

My site was running quite good since a long time. In recent days, I installed smart media module (for audios only). My site is too much slower now. I want to know which thing / module is slowing it. Can some one guide how can I reach the exact reason.
For the time being I have "Debug.. ON" and timers are as under; There are 49 queries on the home page and 16 blocks.

XOOPS took 2.272 seconds to load.
XOOPS Boot took 0.028 seconds to load.
Module init took 0.006 seconds to load.
XOOPS output init took 2.223 seconds to load.
Updates(5) took 0.001 seconds to load.
Recently added books(2) took 0.320 seconds to load.
Recent "Books(9) took 0.281 seconds to load.
Recently added "Books"(3) took 0.391 seconds to load.
Promoted Literature(7) took 0.001 seconds to load.
Module display took 0.001 seconds to load.
Page rendering took 0.011 seconds to load.

2
trabis
Re: Which thing is slowing my web
  • 2008/12/16 14:04

  • trabis

  • Core Developer

  • Posts: 2269

  • Since: 2006/9/1 1


First you have to look if the timers for other pages? Does this happens just in front page?
If yes, then you should look at your blocks and remove some until you find the trouble maker.
If this happens in all pages, then you should check your modules xoops_version.php. All xoops_version.php are read so, if you have unistalled modules you should move them to another directory or delete them.

Please check this first.

3
trabis
Re: Which thing is slowing my web
  • 2008/12/16 19:19

  • trabis

  • Core Developer

  • Posts: 2269

  • Since: 2006/9/1 1


Quote:

trabis wrote:
All xoops_version.php are read so..


Well, this is not true sorry.
Maybe you should start by taking a look to your queries.

I have a little hack (which is very ugly) to show queries time in my site. Please take a look at the comments and make your changes.

You can use this is class/database/mysqldatabase.php
// $Id: mysqldatabase.php 1395 2008-03-27 10:49:44Z phppp $
//  ------------------------------------------------------------------------ //
//                XOOPS - PHP Content Management System                      //
//                    Copyright (c) 2000 XOOPS.org                           //
//                                                    //
//  ------------------------------------------------------------------------ //
//  This program is free software; you can redistribute it and/or modify     //
//  it under the terms of the GNU General Public License as published by     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  You may not change or alter any portion of this comment or credits       //
//  of supporting developers from this source code or any supporting         //
//  source code which is considered copyrighted (c) material of the          //
//  original comment or credit authors.                                      //
//                                                                           //
//  This program is distributed in the hope that it will be useful,          //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
//  GNU General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu)                                          //
// URL: http://www.myweb.ne.jp/, https://xoops.org/, http://www.xoopscube.jp/ //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //
if (!defined("XOOPS_ROOT_PATH")) {
    die(
"XOOPS root path not defined");
}
/**
 * @package     kernel
 * @subpackage  database
 * 
 * @author        Kazumi Ono    
 * @copyright    copyright (c) 2000-2003 XOOPS.org
 */

/**
 * base class
 */
include_once XOOPS_ROOT_PATH."/class/database/database.php";

/**
 * connection to a MySQL database
 * 
 * @abstract
 * 
 * @author      Kazumi Ono  
 * @copyright   copyright (c) 2000-2003 XOOPS.org
 * 
 * @package     kernel
 * @subpackage  database
 */
class XoopsMySQLDatabase extends XoopsDatabase
{
    
/**
     * Database connection
     * @var resource
     */
    
var $conn;

    
/**
     * connect to the database
     * 
     * @param bool $selectdb select the database now?
     * @return bool successful?
     */
    
function connect($selectdb true)
    {
        static 
$db_charset_set;
        
        
$this->allowWebChanges = ( $_SERVER['REQUEST_METHOD'] != 'GET' );
        
        if ( !
extension_loaded'mysql' ) ) {
            
trigger_error'notrace:mysql extension not loaded'E_USER_ERROR );
            return 
false;
        }
        
        if (
XOOPS_DB_PCONNECT == 1) {
            
$this->conn = @mysql_pconnect(XOOPS_DB_HOSTXOOPS_DB_USERXOOPS_DB_PASS);
        } else {
            
$this->conn = @mysql_connect(XOOPS_DB_HOSTXOOPS_DB_USERXOOPS_DB_PASS);
        }
    
        if (!
$this->conn) {
            
$this->logger->addQuery(''$this->error(), $this->errno());
            return 
false;
        }
        if (
$selectdb != false) {
            if (!
mysql_select_db(XOOPS_DB_NAME)) {
                
$this->logger->addQuery(''$this->error(), $this->errno());
                return 
false;
            }
        }
        
        if (!isset(
$db_charset_set) && defined('XOOPS_DB_CHARSET') && XOOPS_DB_CHARSET) {
            
$this->queryF"SET NAMES '" XOOPS_DB_CHARSET "'" );
        }
        
$db_charset_set 1;
        
        return 
true;
    }

    
/**
     * generate an ID for a new row
     * 
     * This is for compatibility only. Will always return 0, because MySQL supports
     * autoincrement for primary keys.
     * 
     * @param string $sequence name of the sequence from which to get the next ID
     * @return int always 0, because MySQL has support for autoincrement
     */
    
function genId($sequence)
    {
        return 
0// will use auto_increment
    
}

    
/**
     * Get a result row as an enumerated array
     * 
     * @param resource $result
     * @return array
     */
    
function fetchRow($result)
    {
        return @
mysql_fetch_row($result);
    }

    
/**
     * Fetch a result row as an associative array
     *
     * @return array
     */
    
function fetchArray($result)
    {
        return @
mysql_fetch_assoc$result );
    }

    
/**
     * Fetch a result row as an associative array
     *
     * @return array
     */
    
function fetchBoth($result)
    {
        return @
mysql_fetch_array$resultMYSQL_BOTH );
    }

    
/**
     * Get the ID generated from the previous INSERT operation
     * 
     * @return int
     */
    
function getInsertId()
    {
        return 
mysql_insert_id($this->conn);
    }

    
/**
     * Get number of rows in result
     * 
     * @param resource query result
     * @return int
     */
    
function getRowsNum($result)
    {
        return @
mysql_num_rows($result);
    }

    
/**
     * Get number of affected rows
     *
     * @return int
     */
    
function getAffectedRows()
    {
        return 
mysql_affected_rows($this->conn);
    }

    
/**
     * Close MySQL connection
     * 
     */
    
function close()
    {
        
mysql_close($this->conn);
    }

    
/**
     * will free all memory associated with the result identifier result.
     * 
     * @param resource query result
     * @return bool TRUE on success or FALSE on failure. 
     */
    
function freeRecordSet($result)
    {
        return 
mysql_free_result($result);
    }

    
/**
     * Returns the text of the error message from previous MySQL operation
     * 
     * @return bool Returns the error text from the last MySQL function, or '' (the empty string) if no error occurred. 
     */
    
function error()
    {
        return @
mysql_error();
    }

    
/**
     * Returns the numerical value of the error message from previous MySQL operation 
     * 
     * @return int Returns the error number from the last MySQL function, or 0 (zero) if no error occurred. 
     */
    
function errno()
    {
        return @
mysql_errno();
    }

    
/**
     * Returns escaped string text with single quotes around it to be safely stored in database
     * 
     * @param string $str unescaped string text
     * @return string escaped string text with single quotes around
     */
    
function quoteString($str)
    {
        return 
$this->quote($str);
        
$str "'".str_replace('\"''"'addslashes($str))."'";
        return 
$str;
    }
    
    
/**
     * Quotes a string for use in a query.
     * 
     */
    
function quote$string )
    {
        return 
"'" mysql_real_escape_string$string$this->conn ) . "'";
    }

    
/**
     * perform a query on the database
     * 
     * @param string $sql a valid MySQL query
     * @param int $limit number of records to return
     * @param int $start offset of first record to return
     * @return resource query result or FALSE if successful
     * or TRUE if successful and no result
     */
    
function queryF($sql$limit=0$start=0)

    {

        if ( !empty(
$limit) ) {

            if (empty(
$start)) {

                
$start 0;

            }

            
$sql $sql' LIMIT '.(int)$start.', '.(int)$limit;

        }
/***********TRABIS HACK****************/
        
$time 0;

        global 
$xoopsUser;
        
//change '1' to your user id so this timer only shows to you
        
if (is_object($xoopsUser) && $xoopsUser->getVar('uid')==1){

            
$start =  microtime();

        }

            
$result mysql_query($sql$this->conn);

         
//change '1' to your user id so this timer only shows to you
         
if (is_object($xoopsUser) && $xoopsUser->getVar('uid')==1){

            
$end microtime() + 1;

            
$time =  $end $start ;

            
// .0003 is just my reference  (forget the leading 1. in the logs, has I said this is an ugly hack) if query takes longer than this it will be prefix with ### so you can better track it in log
            
if ($time 1.0003$time "########".$time."##########";

        }





        if ( 
$result ) {

            
$this->logger->addQuery($time.' - '.$sql);

            
//$this->logger->addQuery($sql);

            
return $result;
/***********END OF TRABIS HACK****************/
        
} else {

            
$this->logger->addQuery($sql$this->error(), $this->errno());

            return 
false;

        }

    }

    
/**
     * perform a query
     * 
     * This method is empty and does nothing! It should therefore only be
     * used if nothing is exactly what you want done! ;-)
     * 
     * @param string $sql a valid MySQL query
     * @param int $limit number of records to return
     * @param int $start offset of first record to return
     * 
     * @abstract
     */
    
function query($sql$limit=0$start=0)
    {

    }

    
/**
     * perform queries from SQL dump file in a batch
     * 
     * @param string $file file path to an SQL dump file
     * 
     * @return bool FALSE if failed reading SQL file or TRUE if the file has been read and queries executed
     */
    
function queryFromFile($file){
        if (
false !== ($fp fopen($file'r'))) {
            include_once 
XOOPS_ROOT_PATH.'/class/database/sqlutility.php';
            
$sql_queries trim(fread($fpfilesize($file)));
            
SqlUtility::splitMySqlFile($pieces$sql_queries);
            foreach (
$pieces as $query) {
                
// [0] contains the prefixed query
                // [4] contains unprefixed table name
                
$prefixed_query SqlUtility::prefixQuery(trim($query), $this->prefix());
                if (
$prefixed_query != false) {
                    
$this->query($prefixed_query[0]);
                }
            }
            return 
true;
        }
        return 
false;
    }
    
    
/**
     * Get field name
     *
     * @param resource $result query result
     * @param int numerical field index
     * @return string
     */
    
function getFieldName($result$offset)
    {
        return 
mysql_field_name($result$offset);
    }

    
/**
     * Get field type
     *
     * @param resource $result query result
     * @param int $offset numerical field index
     * @return string
     */
    
function getFieldType($result$offset)
    {
        return 
mysql_field_type($result$offset);
    }

    
/**
     * Get number of fields in result
     *
     * @param resource $result query result
     * @return int
     */
    
function getFieldsNum($result)
    {
        return 
mysql_num_fields($result);
    }
}

/**
 * Safe Connection to a MySQL database.
 * 
 * 
 * @author Kazumi Ono 
 * @copyright copyright (c) 2000-2003 XOOPS.org
 * 
 * @package kernel
 * @subpackage database
 */
class XoopsMySQLDatabaseSafe extends XoopsMySQLDatabase
{

    
/**
     * perform a query on the database
     * 
     * @param string $sql a valid MySQL query
     * @param int $limit number of records to return
     * @param int $start offset of first record to return
     * @return resource query result or FALSE if successful
     * or TRUE if successful and no result
     */
    
function query($sql$limit=0$start=0)
    {
        return 
$this->queryF($sql$limit$start);
    }
}

/**
 * Read-Only connection to a MySQL database.
 * 
 * This class allows only SELECT queries to be performed through its 
 * {@link query()} method for security reasons.
 * 
 * 
 * @author Kazumi Ono 
 * @copyright copyright (c) 2000-2003 XOOPS.org
 * 
 * @package kernel
 * @subpackage database
 */
class XoopsMySQLDatabaseProxy extends XoopsMySQLDatabase
{

    
/**
     * perform a query on the database
     * 
     * this method allows only SELECT queries for safety.
     * 
     * @param string $sql a valid MySQL query
     * @param int $limit number of records to return
     * @param int $start offset of first record to return
     * @return resource query result or FALSE if unsuccessful
     */
    
function query($sql$limit=0$start=0)
    {
        
$sql ltrim($sql);
        if ( !
$this->allowWebChanges && strtolowersubstr($sql06) ) != 'select' )  {
            
trigger_error'Database updates are not allowed during processing of a GET request'E_USER_WARNING );
            return 
false;
        }
        
        return 
$this->queryF($sql$limit$start);
    }
}
?>

4
ghia
Re: Which thing is slowing my web
  • 2008/12/16 22:59

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


Very useful.
Even without trying it, I would say: This has to be added in the core!

5
RiazShahid
Re: Which thing is slowing my web

Thanks Trabis!
I had 4 unistalled modules, now I have completely deleted them and times have marginally decreased at the moment. I will let you soon, if it has solved my problem or not.
Regarding your hack, I opened the above said php file in notepad and here is the result (i am not much familiar of this sort of stuff)
Quote:

// $Id: mysqldatabase.php 694 2006-09-04 11:33:22Z skalpa $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <https://xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: http://www.myweb.ne.jp/, https://xoops.org/, http://www.xoopscube.jp/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
if (!defined("XOOPS_ROOT_PATH")) {
die("XOOPS root path not defined");
}
/**
* @package kernel
* @subpackage database
*
* @author Kazumi Ono
* @copyright copyright (c) 2000-2003 XOOPS.org
*/

/**
* base class
*/
include_once XOOPS_ROOT_PATH."/class/database/database.php";

/**
* connection to a MySQL database
*
* @abstract
*
* @author Kazumi Ono
* @copyright copyright (c) 2000-2003 XOOPS.org
*
* @package kernel
* @subpackage database
*/
class XoopsMySQLDatabase extends XoopsDatabase
{
/**
* Database connection
* @var resource
*/
var $conn;

/**
* connect to the database
*
* @param bool $selectdb select the database now?
* @return bool successful?
*/
function connect($selectdb = true)
{
if ( !extension_loaded( 'mysql' ) ) {
trigger_error( 'notrace:mysql extension not loaded', E_USER_ERROR );
return false;
}
if (XOOPS_DB_PCONNECT == 1) {
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
} else {
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}

if (!$this->conn) {
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
}
if($selectdb != false){
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
}
}
return true;
}

/**
* generate an ID for a new row
*
* This is for compatibility only. Will always return 0, because MySQL supports
* autoincrement for primary keys.
*
* @param string $sequence name of the sequence from which to get the next ID
* @return int always 0, because MySQL has support for autoincrement
*/
function genId($sequence)
{
return 0; // will use auto_increment
}

/**
* Get a result row as an enumerated array
*
* @param resource $result
* @return array
*/
function fetchRow($result)
{
return @mysql_fetch_row($result);
}

/**
* Fetch a result row as an associative array
*
* @return array
*/
function fetchArray($result)
{
return @mysql_fetch_assoc( $result );
}

/**
* Fetch a result row as an associative array
*
* @return array
*/
function fetchBoth($result)
{
return @mysql_fetch_array( $result, MYSQL_BOTH );
}

/**
* Get the ID generated from the previous INSERT operation
*
* @return int
*/
function getInsertId()
{
return mysql_insert_id($this->conn);
}

/**
* Get number of rows in result
*
* @param resource query result
* @return int
*/
function getRowsNum($result)
{
return @mysql_num_rows($result);
}

/**
* Get number of affected rows
*
* @return int
*/
function getAffectedRows()
{
return mysql_affected_rows($this->conn);
}

/**
* Close MySQL connection
*
*/
function close()
{
mysql_close($this->conn);
}

/**
* will free all memory associated with the result identifier result.
*
* @param resource query result
* @return bool TRUE on success or FALSE on failure.
*/
function freeRecordSet($result)
{
return mysql_free_result($result);
}

/**
* Returns the text of the error message from previous MySQL operation
*
* @return bool Returns the error text from the last MySQL function, or '' (the empty string) if no error occurred.
*/
function error()
{
return @mysql_error();
}

/**
* Returns the numerical value of the error message from previous MySQL operation
*
* @return int Returns the error number from the last MySQL function, or 0 (zero) if no error occurred.
*/
function errno()
{
return @mysql_errno();
}

/**
* Returns escaped string text with single quotes around it to be safely stored in database
*
* @param string $str unescaped string text
* @return string escaped string text with single quotes around
*/
function quoteString($str)
{
$str = "'".str_replace('\\"', '"', addslashes($str))."'";
return $str;
}

/**
* perform a query on the database
*
* @param string $sql a valid MySQL query
* @param int $limit number of records to return
* @param int $start offset of first record to return
* @return resource query result or FALSE if successful
* or TRUE if successful and no result
*/
function queryF($sql, $limit=0, $start=0)
{
if ( !empty($limit) ) {
if (empty($start)) {
$start = 0;
}
$sql = $sql. ' LIMIT '.(int)$start.', '.(int)$limit;
}
$result = mysql_query($sql, $this->conn);
if ( $result ) {
$this->logger->addQuery($sql);
return $result;
} else {
$this->logger->addQuery($sql, $this->error(), $this->errno());
return false;
}
}

/**
* perform a query
*
* This method is empty and does nothing! It should therefore only be
* used if nothing is exactly what you want done!
*
* @param string $sql a valid MySQL query
* @param int $limit number of records to return
* @param int $start offset of first record to return
*
* @abstract
*/
function query($sql, $limit=0, $start=0)
{

}

/**
* perform queries from SQL dump file in a batch
*
* @param string $file file path to an SQL dump file
*
* @return bool FALSE if failed reading SQL file or TRUE if the file has been read and queries executed
*/
function queryFromFile($file){
if (false !== ($fp = fopen($file, 'r'))) {
include_once XOOPS_ROOT_PATH.'/class/database/sqlutility.php';
$sql_queries = trim(fread($fp, filesize($file)));
SqlUtility::splitMySqlFile($pieces, $sql_queries);
foreach ($pieces as $query) {
// [0] contains the prefixed query
// [4] contains unprefixed table name
$prefixed_query = SqlUtility::prefixQuery(trim($query), $this->prefix());
if ($prefixed_query != false) {
$this->query($prefixed_query[0]);
}
}
return true;
}
return false;
}

/**
* Get field name
*
* @param resource $result query result
* @param int numerical field index
* @return string
*/
function getFieldName($result, $offset)
{
return mysql_field_name($result, $offset);
}

/**
* Get field type
*
* @param resource $result query result
* @param int $offset numerical field index
* @return string
*/
function getFieldType($result, $offset)
{
return mysql_field_type($result, $offset);
}

/**
* Get number of fields in result
*
* @param resource $result query result
* @return int
*/
function getFieldsNum($result)
{
return mysql_num_fields($result);
}
}

/**
* Safe Connection to a MySQL database.
*
*
* @author Kazumi Ono
* @copyright copyright (c) 2000-2003 XOOPS.org
*
* @package kernel
* @subpackage database
*/
class XoopsMySQLDatabaseSafe extends XoopsMySQLDatabase
{

/**
* perform a query on the database
*
* @param string $sql a valid MySQL query
* @param int $limit number of records to return
* @param int $start offset of first record to return
* @return resource query result or FALSE if successful
* or TRUE if successful and no result
*/
function query($sql, $limit=0, $start=0)
{
return $this->queryF($sql, $limit, $start);
}
}

/**
* Read-Only connection to a MySQL database.
*
* This class allows only SELECT queries to be performed through its
* {@link query()} method for security reasons.
*
*
* @author Kazumi Ono
* @copyright copyright (c) 2000-2003 XOOPS.org
*
* @package kernel
* @subpackage database
*/
class XoopsMySQLDatabaseProxy extends XoopsMySQLDatabase
{

/**
* perform a query on the database
*
* this method allows only SELECT queries for safety.
*
* @param string $sql a valid MySQL query
* @param int $limit number of records to return
* @param int $start offset of first record to return
* @return resource query result or FALSE if unsuccessful
*/
function query($sql, $limit=0, $start=0)
{
$sql = ltrim($sql);
if (strtolower(substr($sql, 0, 6)) == 'select') {
//if (preg_match("/^SELECT.*/i", $sql)) {
return $this->queryF($sql, $limit, $start);
}
$this->logger->addQuery($sql, 'Database update not allowed during processing of a GET request', 0);
return false;
}
}
?>
.

6
ghia
Re: Which thing is slowing my web
  • 2008/12/17 11:18

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


It seems there is a difference in the files used. Have you the latest XOOPS 2.3.2b?
In your file, after ?> at the end, there should be not a dot nor a linefeed. (This could be a typo of you?)

7
RiazShahid
Re: Which thing is slowing my web

I didn't typed any thing. I am running XOOPS 2.0.17

8
ghia
Re: Which thing is slowing my web
  • 2008/12/18 11:40

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


You can add the hack by editing the function queryF in your file, the code to change is marked as TRABIS HACK.
Make sure that nothing follows after the ?> at the end of the file.
It shows only for the admin (uid = 1).
Of course setting debug to on is needed.

9
ghia
Re: Which thing is slowing my web
  • 2008/12/18 14:02

  • ghia

  • Community Support Member

  • Posts: 4953

  • Since: 2008/7/3 1


Tried to test the hack on a website of mine. I was surprised the option was already standard in the 2.2.x series.
Quote:
Queries core
SELECT * FROM xoops_config WHERE (conf_modid = '1' AND conf_catid = '1') ORDER BY conf_order ASC
SELECT sess_data, sess_ip FROM xoops_session WHERE sess_id = '0123456789'
( 0.000125)
SELECT * FROM xoops_users u, xoops_user_profile p WHERE u.uid = p.profileid AND uid = '1' LIMIT 0, 1
( 0.000268)
SELECT * FROM xoops_modules WHERE dirname = 'system'
( 0.000189)
SELECT * FROM xoops_config WHERE (conf_modid = '1') ORDER BY conf_order ASC
( 0.000991)
SELECT COUNT(*) FROM xoops_banner
( 8.8E-5)
SELECT * FROM xoops_config WHERE (conf_modid = '1' AND conf_catid = '3') ORDER BY conf_order ASC
( 0.000258)
SELECT * FROM xoops_group_permission WHERE (gperm_modid = '1' AND gperm_name = 'module_admin' AND gperm_groupid IN (1,2))
( 0.000426)
SELECT * FROM xoops_modules WHERE (hasadmin = '1' AND isactive = '1' AND mid IN (1,2,3,4,7,16,9,10,11,12,13,15,17,19,20,21)) ORDER BY name ASC
( 0.000388)
SELECT * FROM xoops_group_permission WHERE (gperm_modid = '1' AND gperm_name = 'system_admin' AND gperm_groupid IN (1,2))
( 0.000479)
SELECT * FROM xoops_configcategory WHERE confcat_modid IN (7,3,20,17,19,12,13,15,10,4,21,2,16,11,1,9)
( 0.000218)
SELECT * FROM xoops_modules WHERE dirname = 'wflinks'
( 0.000179)
SELECT * FROM xoops_modules WHERE dirname = 'news'
( 0.00017)
SELECT * FROM xoops_config WHERE (conf_modid = '4') ORDER BY conf_order ASC
( 0.000622)
Total Number of Queries: 14 | Total SQL Generation Time: 0.004401

Queries module
DELETE FROM xoops_protector_access WHERE expire < UNIX_TIMESTAMP()
( 0.000173)
SELECT COUNT(*) FROM xoops_protector_access WHERE ip='7.65.43.21' AND request_uri='/cms/modules/system/admin.php?fct=preferences'
( 0.000145)
SELECT COUNT(*) FROM xoops_protector_access WHERE ip='7.65.43.21'
( 0.000118)
INSERT INTO xoops_protector_access SET ip='7.65.43.21',request_uri='/cms/modules/system/admin.php?fct=preferences',expire=UNIX_TIMESTAMP()+'60'
( 0.00014)
SELECT * FROM xoops_group_permission WHERE (gperm_modid = '1' AND gperm_name = 'module_admin' AND gperm_groupid IN (1,2))
( 0.000565)
SELECT * FROM xoops_configcategory WHERE confcat_modid IN (1,2,3,4,7,16,9,10,11,12,13,15,17,19,20,21,1)
( 0.000319)
SELECT * FROM xoops_modules WHERE mid IN (1,2,3,4,16,9,10,12,13,15,17,19,21)
( 0.000217)
Total Number of Queries: 7 | Total SQL Generation Time: 0.001677

Queries block
Total Number of Queries: 0 | Total SQL Generation Time: 0

Blocks
Total: 0 blocks

Execution Time
XOOPS took 0.219801902771 seconds to load.
The more I discover about the 2.2.x series, the more I find its version number correct with its advanced features as opposed to the poor functionality of the 2.0.x series of XOOPS.

I feel it's total unjust that the series 2.2.x are marked as unstable releases at Sourceforge. And maybe with all the problems of the recent introduction of the 2.3.x series it should be rebaptised to 2.1.x.

10
trabis
Re: Which thing is slowing my web
  • 2008/12/18 14:09

  • trabis

  • Core Developer

  • Posts: 2269

  • Since: 2006/9/1 1


Quote:

ghia wrote:
The more I discover about the 2.2.x series, the more I find its version number correct with its advanced features as opposed to the poor functionality of the 2.0.x series of XOOPS.

I feel it's total unjust that the series 2.2.x are marked as unstable releases at Sourceforge. And maybe with all the problems of the recent introduction of the 2.3.x series it should be rebaptised to 2.1.x.


Agree!

The features of 2.2 are very good but maybe the problem was the way the code was implemented.
Xoops 2.3 seems to be more extensible and cleaner but it is lacking important stuff like page awareness or modules ability to extend profile.

Login

Who's Online

208 user(s) are online (86 user(s) are browsing Support Forums)


Members: 0


Guests: 208


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Nov 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits