Я создаю веб-сайт с использованием фреймворков, mysql и zend framework. Когда я пытаюсь запустить любой sql-запрос, генерация страниц начинается примерно на 0,5 секунды. Это слишком высоко. Если я превращу sql, создание страницы - 0.001. Количество запросов, которые я запускаю, на самом деле не влияет на время создания страницы (проверено 1-10 запросов). Остается на 0,5 секунды Я не могу понять, что я делаю неправильно.Zend Framework и Mysql - очень медленно
подключиться к SQL в загрузчике:
protected function _initDatabase()
{
try
{
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
$db = Zend_Db::factory($config -> database);
Zend_DB_Table_Abstract::setDefaultAdapter($db);
}
catch (Zend_Db_Exception $e)
{
}
}
Тогда у меня есть простая модель
class StandardAccessory extends Zend_DB_Table_Abstract
{
/**
* The default table name
*/
protected $_name = 'standard_accessory';
protected $_primary = 'model';
protected $_sequence = false;
}
И, наконец, в мой контроллер индекса, я просто запустить метод найти.
require_once APPLICATION_PATH . '/models/StandardAccessory.php';
$sa = new StandardAccessory();
$stndacc = $sa->find('abc');
Все это занимает ~ 0,5 секунды, что слишком долго. Какие-либо предложения?
Спасибо!
И запрос для BENCHMARK должен возвращать 1 строку, иначе mysql будет жаловаться: ERROR 1242 (21000): Подзапрос возвращает более 1 строки. –
@Leonel Martins: Правильно, я полагаю, поскольку OP использует 'find()', что он ограничивает первичный ключ таблицы. Поэтому должно быть гарантировано вернуть одну строку (или нулевые строки, если «abc» не найден). –
Первая ссылка на кэширование метаданных теперь недействительна, я предполагаю, что она такова: https://framework.zend.com/manual/1.10/en/zend.db.table.html#zend.db.table. metadata.caching –