Flex w / AMF Возвращает результаты медленно - PullRequest
1 голос
/ 03 сентября 2010

Я думаю, что это всего лишь вопрос тонкой настройки некоторых различных элементов, но я хотел бы узнать ваше мнение. У меня есть приложение 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? Я не совсем уверен, что показать ...

Есть ли что-то, чего я полностью упускаю?

1 Ответ

0 голосов
/ 06 сентября 2010

Как я понял, ваш сервер AMF медленно возвращает ответы на ваш интерфейс RIA, поэтому, возможно, вы попытаетесь использовать AMFPHP вместо этого? как более легкое решение.

...