Я думаю, что это всего лишь вопрос тонкой настройки некоторых различных элементов, но я хотел бы узнать ваше мнение. У меня есть приложение Flex, использующее службы данных Flex 4 и связывающееся со службами Zend AMF. Одна из служб возвращает все результаты в базе данных, используя SELECT * FROM table
, ~ 1200 строк (размер пакета 140 КБ).
Моя проблема - время отклика, вызывающее ярость. Общая продолжительность всегда между 7-8 секундами. Все, кроме около 150 мс, это время ожидания. Я разбил PHP, чтобы точно выяснить, где была задержка, и оказалось, что return $rows
съедает задержку ~ 6,8 с. Я могу справиться с 1-2 секундами, но когда я начинаю ждать около 8 секунд, я чувствую себя немного тупым. Я перекрестно проверил скорость ответа на запрос непосредственно из базы данных, и, как и ожидалось, общее время запроса составляет 45-60 мс.
PHP, это в основном просто сгенерированный код службы данных Flex, хотя в производственном процессе это не то же самое:
public function getAllProject_entries() {
$stmt = mysqli_prepare($this->connection, "SELECT u.*
FROM $this->tablename u");
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->id, $row->field1, $row->field2, $row->field3, $row->field4, $row->field5, $row->field6, $row->field7, $row->field8, $row->field9, $row->field10, $row->field11, $row->field12, $row->field13, $row->field14, $row->field15, $row->field16, $row->field17, $row->field18, $row->field19);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->id, $row->field1, $row->field2, $row->field3, $row->field4, $row->field5, $row->field6, $row->field7, $row->field8, $row->field9, $row->field10, $row->field11, $row->field12, $row->field13, $row->field14, $row->field15, $row->field16, $row->field17, $row->field18, $row->field19);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
Вам нужно увидеть код Flex? Я не совсем уверен, что показать ...
Есть ли что-то, чего я полностью упускаю?