Влияет ли открытие и закрытие сессии на производительность? - PullRequest
1 голос
/ 30 октября 2010

У меня есть PHP-скрипт, который запускается через вызов AJAX, и иногда это может занять очень много времени (до 30 секунд) для некоторых людей.Чтобы привлечь внимание посетителя, я показываю индикатор хода выполнения процесса, а также перечисляю случайные факты о том, что делает веб-приложение и т. Д. И т. Д.

Для обновления индикатора выполнениячтобы точно показать, насколько далеко процесс находится в%, скрипт записывает в сеанс, в каком «состоянии» находится процесс, «итого» для суммы, которую нужно сделать, и «прогресс», чтобы сказать, сколько он сделал,Во время выполнения этого длинного вызова AJAX на страницу, которая перечисляет эти 3 переменные сеанса, делается еще один отдельный вызов AJAX, который может превратить его в точный индикатор выполнения в JavaScript, и он повторяется каждые 0,5 секунды.

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

Есть ли какие-либо существенные потери производительности, вызванные этим?Есть ли лучшая альтернатива, чтобы показать, как далеко находится длинный AJAX-вызов?

РЕДАКТИРОВАТЬ: Я должен был выбирать слова более тщательно.Раньше этот процесс занимал более 30 секунд, и было необходимо показать реальный индикатор выполнения вместо повторяющегося изображения.После изменения алгоритма теперь это занимает в среднем 1-5 секунд, но я бы предположил, что в крайних случаях он может достигать 10 секунд.Он асинхронный, и на странице есть другое содержимое, и они должны выбрать, чтобы начать процесс.Они могут перейти на другие страницы или даже закрыть окно и вернуться позже, чтобы увидеть, что оно закончено.Теперь, когда временной интервал значительно ниже, мне интересно, не ухудшаю ли я его быстродействие, пытаясь показать «истинный» индикатор выполнения или есть ли другая альтернатива для этого.

Ответы [ 3 ]

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

Звучит сложно, хотя нет оснований полагать, что закрытие сессии может стоить чего-то особенно дорогостоящего.Сервер в таком случае просто назначает слушателя вашего соединения свободным.Конечно, все, что называется чрезмерно, когда в этом нет необходимости, обычно является плохой идеей.Если вы думаете, что это странное поведение с длительным ожиданием может быть вызвано закрытием сеанса, вы должны увидеть, сколько времени потребуется для запуска без обратной связи с индикатором выполнения.Время, чтобы быть уверенным.Если это примерно то же самое, я бы не стал слишком беспокоиться о закрытии сессии, хотя бы выяснил, действительно ли сервер занимает столько времени.Если это значительно быстрее, имейте в виду, что это может быть несколько факторов, не обязательно закрытие сессии.

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

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

Я бы больше беспокоился об этом, чем время сеанса.

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

тридцать секунд - это долгое время, когда кто-нибудь что-то ждет в Интернете, и кажется, что это блокирует ваш интерфейс (я имею в виду, что пользователь не может выполнять другую работу, ему приходится ждать, пока задачаполный).вам нужно быть осторожным, чтобы это число становилось слишком большим, можно тайм-аут запроса

, если вы делаете на сервере что-то, что по какой-то причине просто не может быть выполнено быстро, я бы сразу же вернул пользователядля нормального потока пользовательского интерфейса и имеют некоторые асинхронные средства обновления пользователя о его завершении (область «статуса» и т. д.).например, многие сайты для загрузки фотографий будут работать таким образом - пока ваша фотография обрабатывается, они помещают изображение заполнителя, а затем обновляют пользовательский интерфейс пользователя фотографией после завершения кодирования и изменения размера.

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