Saniok, Да вроде нет, код практически полностью идентичен у первой и второй версии двига. Просто везде поменял функции на PDO`шные.
Если майскл на майскли просто так не заменишь нужно смотреть почти каждый запрос то в пдо тем более. Когда на майскли переводил джон были проблемы изза слепой автозамены полез в код и проблема нашлась
Сначало надо выяснить что так долго там делаеться, запросы к базе или 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). 'сек.';?>
# MARAZM (04.05.2015 / 11:18)
Если майскл на майскли просто так не заменишь нужно смотреть почти каждый запрос то в пдо тем более. Когда на майскли переводил джон были проблемы изза слепой автозамены полез в код и проблема нашлас
А это как? Т.е., обычной заменой, допустим
$res = mysql_fetch_assoc(mysql_query("SELECT * FROM `table`"));
на
$res = $db->query("SELECT * FROM `table`") -> fetch(); не обойтись?
MyZik,
http://php.net/manual/ru/pdo.c ... s.php обрати внимание на пример # 4
И зачем PDO, когда есть mysqli?
Delphinum, ну, сменил подключение к БД как на примере - генерация та же. Не понимаю, как может влиять код подключения к базе на генерацию страниц.
// Я у многих спрашивал, что лучше, PDO или MySQLi, каждый говорит по-своему. И говорят, что PDO быстрее чем MySQLi.
MyZik, Ответа на вопрос что лучше pdo или mysqli нету ибо в чемто pdo лучше, а в чемто mysqli
MyZik, Чем дольше ты подключаешься к БД, тем дольше генериться страница. Так и влияет.
Чем же аргументировали люди то, что PDO лучше MySQLi?