У меня есть запрос здесь (PHP с Zend Framework для базы данных MySQL), использующий один параметр POST в качестве аргумента в выражении SQL.
Так что у меня есть локальная установка XAMPP на моей машине разработки ивремя выполнения этого маленького скрипта составляет около 150 мс, независимо от того, передал ли я аргумент с или без использования mysql_real_escape_string () для этого аргумента до этого.
Тогда у меня есть виртуальный сервер с установленным BitNami-WAMP-Stack.Когда я запускаю сценарий там (100% того же содержимого базы данных), это занимает около 260 мс без mysql_real_escape_string, это не так «быстро» (я знаю, что 150 мс совсем не быстро), как на моей локальной машине, но все будет в порядке.Но если я добавлю только одну mysql_real_escape_string () к аргументу из переменной POST, все это займет 1,2 секунды.
И еще я заметил, что каждый вызов mysql_real_escape_string заставляет скрипт работать на 1 секунду медленнее в виртуальнойсервер.На моей локальной машине это никак не влияет.
Как это может быть?Это установка MySQL или PHP.ini или что?Поскольку у меня есть 100% одна и та же база данных и источник PHP на обеих машинах, я думаю, что это может быть только параметризацией?
Спасибо за любую помощь заранее!
РЕДАКТИРОВАТЬ:
Итак, вот что я делаю, сначала подключив БД (в Bootstrap.php):
$GLOBALS["db"]= new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => "localhost",
'username' => "user",
'password' => "password",
'dbname' => "database"
));
А затем позже захотим запросить базу данных:
global $db;
$query = sprintf("SELECT * FROM table WHERE id = '%s'", mysql_real_escape_string($id) );
$db->query("SET NAMES 'utf8'");
$db->fetchAll($query);
Я только что сделал еще один тест: когда я добавляю эту простую тестовую строку в свой код, это делает скрипт на ~ 600 мс медленнее на виртуальной машине:
mysql_real_escape_string("TEST");