Как получить Ajax Request Progress? - PullRequest
       0

Как получить Ajax Request Progress?

1 голос
/ 04 октября 2010

Я занимаюсь разработкой проекта, встроенного в CakePHP, и использую в нем jQuery. У меня есть скрипт, который должен быть вызван запросом ajax. Этот запрос делает много манипуляций в базе данных и занимает слишком много времени. Между выполнением он записывает свой статус в отдельный файл, чтобы я мог видеть состояние выполнения скрипта. Каждый раз, когда он открывает файл, запишите в нем статус выполнения, а затем закройте файл, чтобы устранить проблему блокировки файла.
Теперь, когда этот скрипт выполняется, я отправляю еще один ajax-запрос, который просто читает этот файл и периодически возвращает содержимое каждые 20 секунд. Теперь проблема в том, что когда первый запрос AJAX занят MySQL, любой другой запрос к серверу будет остановлен. Mysql создает процессы всех этих запросов и переводит этот запрос в спящий режим. Я думаю, что это из-за фреймворка, потому что на каждом запросе фреймворка необходимо проверить базу данных. Когда первый основной сценарий завершен, все остальные запросы также выполняются.
Есть ли способ получить прогресс AJAX? Поправь меня, если я где-то не прав ... !!! Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 октября 2010

Я сделал это. Мне просто нужно вызвать скрипт, который читает файл и отправляет обратно данные из отдельного файла php. Не нужно называть рамки ... !!!

0 голосов
/ 04 октября 2010

Если вы используете jQuery для своих нужд Ajax, вы можете посмотреть опцию «async» метода $ .ajax. Как я вижу, вы хотите показать прогресс по запросу, над которым в данный момент ведется работа. Теперь у этого есть недостаток, он заблокирует все, что вы делаете, но он будет правильно показывать прогресс каждого «потока». Я не знаком с Cake, так как я использую Kohana. Теперь mysql помещает что-то в «сон» довольно маловероятно, он скорее ставит их в очередь. Здесь нет никакого «прогресса», я бы предложил использовать что-то вроде $ .ajaxStart или $ .ajaxStop (как бы это ни вызывалось в jquery), как только вы получите ответ от сервера, вы сможете скрыть элемент прогресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...