Уменьшение генерации страницы

1.17K
.
Bewahret einander vor Herzeleid

Saniok, Да вроде нет, код практически полностью идентичен у первой и второй версии двига. Просто везде поменял функции на PDO`шные.

.
КИДАЛА!!! Дел не иметь!

Если майскл на майскли просто так не заменишь нужно смотреть почти каждый запрос то в пдо тем более. Когда на майскли переводил джон были проблемы изза слепой автозамены полез в код и проблема нашлась

.
Swank
Сексуальность валенка

Сначало надо выяснить что так долго там делаеться, запросы к базе или php код исполняеться
В своеей обертке pdo сделай подсчет кол. запросов и время их исполнения

я себе зделал так (+/-)

<?php
class DB {
    
    protected static $connection;
    private static $instance = null;
    private $querycount = 0;
    private $querytime = 0.0;
    
    public static function getInstance() {
        if(is_null(self::$instance)) {
            self::$instance = new DB;
        }
        return self::$instance;
    }
    
    public static function connection() {
        if (is_null(static::$connection)) {
            
            # Данные от бд
            $dbcfg = [
                'host' => 'localhost',
                'name' => 'myblog',
                'user' => 'root',
                'pass' => ''
            ];
            
            # Параметры подключения
            $opt = [
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            ];
            
            try {
                static::$connection = new PDO("mysql:host=".$dbcfg['host'].";dbname=".$dbcfg['name'], $dbcfg['user'], $dbcfg['pass'], $opt);
            } catch (PDOException $e) {
                throw new RuntimeException('Не удалось установить соединение с базой данных:%s'. $e->getMessage());
            }
        }

        return static::$connection;
    }

    public static function prepare($sql, $values = null) {
        $stime = microtime(true);
        $sth = static::connection()->prepare($sql);
        $sth->execute($values);
        self::getInstance()->querytime += (microtime(true) - $stime);
        self::getInstance()->querycount++;
        
        return $sth;
    }
    
    public static function getQueryCount() {
        return self::getInstance()->querycount;
    }
    
    public static function getQueryTime() {
        return self::getInstance()->querytime;
    }

    public static function __callStatic($method, array $arguments ) {
        return call_user_func_array([static::connection(), $method], $arguments);
    }

}
?>


В функцие prepare идет подсчет времени исполнения запросов и кол. запросов.
Потом я себе в футере делаю
<?='Генирация: ' . round(microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"], 3) . 'сек. Память: ' . round(memory_get_usage() / 1024, 2) . 'Кб. Запросов: ' . DB::getQueryCount() . ' Время выполнения запросов: ' . round(DB::getQueryTime(), 3). 'сек.';?>
.
Bewahret einander vor Herzeleid
# MARAZM (04.05.2015 / 11:18)
Если майскл на майскли просто так не заменишь нужно смотреть почти каждый запрос то в пдо тем более. Когда на майскли переводил джон были проблемы изза слепой автозамены полез в код и проблема нашлас
А это как? Т.е., обычной заменой, допустим
$res = mysql_fetch_assoc(mysql_query("SELECT * FROM `table`"));
на $res = $db->query("SELECT * FROM `table`") -> fetch(); не обойтись?
.
Bewahret einander vor Herzeleid

Swank, ООП? Не люблю...

.
Delphinum

MyZik, http://php.net/manual/ru/pdo.c ... s.php обрати внимание на пример # 4
И зачем PDO, когда есть mysqli?

.
MyZik
Bewahret einander vor Herzeleid

Delphinum, ну, сменил подключение к БД как на примере - генерация та же. Не понимаю, как может влиять код подключения к базе на генерацию страниц.
// Я у многих спрашивал, что лучше, PDO или MySQLi, каждый говорит по-своему. И говорят, что PDO быстрее чем MySQLi.

.
Сексуальность валенка

MyZik, Ответа на вопрос что лучше pdo или mysqli нету ибо в чемто pdo лучше, а в чемто mysqli

.
Bewahret einander vor Herzeleid

Swank, и я про то же.

.

MyZik, Чем дольше ты подключаешься к БД, тем дольше генериться страница. Так и влияет.
Чем же аргументировали люди то, что PDO лучше MySQLi?

Всего: 42