2010-10-04 2 views
1

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

ответ

0

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

0

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

+0

Да, вы правы, я просто хочу показать ход моего первого запроса ajax. Этот скрипт перебирает более 10 тысяч записей, и я просто хочу показать пользователю, что в настоящее время на записи выполняется скрипт. После первого запроса любой другой запрос создает процесс в mysql. Я проверяю «show processlist»; команда в mysql создает процесс и устанавливает статус сна в столбце Command. Я уже показывал сообщение «Please wait script in progress ...», но я просто хочу показать фактическое состояние процесса для пользователя. – Nehal