2015-12-28 4 views
2

У меня есть вызов AJAX, в котором работает длинный PHP-скрипт, где у него 20 разных результатов, я хотел бы показать, когда каждый шаг в скрипте выполняется. Как и 1/20 сделано, 2/20 сделано, 3/20 сделано.Как измерить ход вызова ajax? В Php с jquery/ajax

Последние 29-12-2015 03:17.

Я попытался создать файл JSON так (jsonFileName_uniqueTimeStampHere.json) PHP, но время, затраченное на создание файла с PHP, приведет к ошибке 404 файла!

Потому что, когда вызов AJAX работает, он приходит к выполнению вызова до того, как файл был создан, я знаю, что я не могу создать файл с помощью JavaScript, но все равно создать его.

Файл перед успешным обратным вызовом от jQuery AJAX?

Каким будет лучший способ отображения информации о ходе работы во время вызова AJAX.

У меня есть это сейчас, у меня есть файл JSON, сохраненный на сервере, который обновляется с последним завершенным состоянием, но если у нескольких пользователей работает тот же скрипт, файл JSON с состоянием перезаписывается.

  1. Должен ли я сохранять состояние каждого прогресса в БД и затем получать его с несколькими вызовами метода PHP, которые получают состояние, которое было завершено?
  2. Должен ли я использовать текущий метод, который я использую и добавляю идентификатор пользователя в файл JSON, чтобы он был уникальным при каждом вызове файла?
  3. Как мне сделать это так же, как Seositecheckup?

Каков наилучший способ добиться прогресса с помощью AJAX и PHP?

Скажите, пожалуйста, если вам нужна дополнительная информация.

Я огляделся и не чувствую, что информация или половина информации, есть, чтобы найти в Интернете было достаточно, чтобы сделать это сам.

Я хотел бы использовать jQuery AJAX, а не XMLHttpRequest, я ищу что-то похожее на seositecheckup.com, когда вы просматриваете страницу, вы можете видеть обновление состояния для каждой завершенной функции в консоли и выполняться с помощью разных AJAX звонки. Как это возможно?

Следует ли забыть об использовании jQuery и сосредоточиться на простом JavaScript вместо этого?

Прямо сейчас у меня есть установка с jQuery, которая работает проблема в том, что я использую JSON-файл для получения результата, и он перезаписывается, когда несколько пользователей запрашивают один и тот же скрипт, возможно ли сохранить состояние в db вместо этого и получить его оттуда с каким-то уникальным идентификатором?

В будущем я хотел бы предоставить сценарий в очередь, которая может быть запущена, и когда сценарий заканчивается, он должен отправить электронное письмо пользователю.

+0

Возможный дубликат [Что является самым чистым способом получения прогресса по запросу JQuery ajax?] (Http://stackoverflow.com/questions/19126994/what-is-the-cleanest-way-to-get-the -progress-of-jquery-ajax-request) –

+0

Спасибо, я посмотрел ссылку и ее около 2 лет и использует XMLHttpRequest, и я бы хотел использовать jquery ajax так же, как seositecheckup. – user3502250

+0

jquery ajax - всего лишь обертка вокруг XHR –

ответ

0

HTTP-способ обработки запросов, который может занять много времени, заключается в том, чтобы запросы возвращали 202, а тело ответа должно содержать URL-адрес, по которому пользователь может запрашивать результат.

#Request 
POST /some/entitities 
... 

#Response 
HTTP/1.0 202 Accepted 

/jobs/{jobId} 

Пользователь может опрашивать /jobs/{jobId}, который может возвращать число, чтобы прогресс. Вы должны использовать это? Нет, но если вы это сделаете, другие разработчики сразу узнают, что происходит.

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

+0

Если я должен сделать это с помощью jquery ajax, как бы вы сохранили данные в базе данных с уникальным идентификатором, который принадлежит пользователю, выполняющему сценарий. Какой был бы лучший способ создать уникальный идентификатор прогресса, можете ли вы дать мне и пример создания db, у меня есть 20 разных результатов. – user3502250

+0

Вы можете использовать подсказки, вы передаете их обратно вызывающему абоненту с помощью 202 –

+0

. Как бы вы это сделали, не могли бы вы сделать это с помощью php или в интерфейсе javascript? – user3502250

Смежные вопросы