Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
В коде PHP есть функция, которая может выполняться длительное время - минимум 30 секунд, максимум - десятки минут. Во время выполнения этой функции в цикле на страницу выводится некоторая инфа, отображающая процесс выполнения. Но пока весь php скрипт не выполнится пользователь не увидит этой инфы. Как сделать чтобы при каждой итерации цикла инфа на странице обновлялась? Поискав решение проблемы нашел, что это можно сделать только на AJAX. Можно ли это сделать средствами только PHP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 13:39 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
можно через iframe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 14:02 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
stomp =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 14:08 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Random2Можно ли это сделать средствами только PHP?Нет, однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 20:02 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Если нельзя сделать только на PHP, каким образом это можно сделать и на чем? К примеру, накидал простой код. При загрузке страницы вызывается функция, в которой в цикле выводится значение переменной с задержкой в 1сек. Но все равно, вижу результат работы только после выполнения всей функции. Как уже не пробовал - и глобальную переменную объявлял, считывая значение по таймеру и еще несколько способов - не получается. Искал инфу, статьи, доки, но знать бы точно что искать и где - было бы уже легче. Вот мой код: index.php Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Код: php 1. 2. 3. 4. 5. 6. 7. 8. Я только начинаю осваивать эти языки программирования. Чисто теоретически понимаю, что строка $("#content").html(html); сработает тогда, когда полностью выполнится код из test.php. Но как сделать, чтобы долгий работающий цикл на PHP передавал html-странице определенные данные во время своей работы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 02:00 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Random2Если нельзя сделать только на PHP, каким образом это можно сделать и на чем?Правильно думаете, получается нехилый симбиоз клиентских и серверных скриптов. Смысл такой: серверный скрипт по мере выполнения периодически отчитывается "выполнено столько-то процентов (или чего там еще)" и сохраняет сие значение где-то в БД (как один из вариантов, конечно), а клиентский скрипт периодически (раз в секунду-две-пять или вроде того) запрашивает это значение, получает ответ и выводит его в браузер. Разумеется, перезагрузка страницы каждую секунду - дело неблагодарное, а потому запрос должен быть асинхронным - вот так до ajax дошли. Есть и более хитрые способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 03:01 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
vkle, Получается должно быть что-то типа такого (вместо БД инфу можно хранить в файле?): Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Я правильно понял? авторЕсть и более хитрые способы. Какие, например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 11:58 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Random2вместо БД инфу можно хранить в файле?Да можно, конечно, и в файле и в мемкеше - оно почти не имеет различий (разница только в обращениях к диску, да сохранности информации в случае перезагрузки сервера). Однако, в любом случае следует предусмотреть возможность двух и более клиентских запросов (сессии?) - чтобы они не мешали друг другу, ну и уборку мусора. Random2Я правильно понял?Да, как один из вариантов. Возможно, более правильным будет генерить новый запрос к серверу не каждую секунду, а спустя секунду после получения ответа. Это немного снизит вероятность перегрузки сервера. Random2авторЕсть и более хитрые способы. Какие, например? тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:42 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылки, очень нужная инфа. Но для первого раза попробую сделать тем способом, который начал, вроде бы кажется проще, чем COMET. vkleгенерить новый запрос к серверу не каждую секунду, а спустя секунду после получения ответа. Это немного снизит вероятность перегрузки сервера. Есть еще вопрос - а где я могу отслеживать получения ответа от сервера? Насколько я понимаю, здесь: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. я не могу этого сделать, т.к. success: function(html) наступает после завершения выполнения processdata.php. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 13:53 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Random2, Ну да, именно там. Получили контент (или сообщение об ошибке), разместили его на страничке. Затем можно "взводить" таймер для следующего запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 16:02 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
vkle, Я почему спрашиваю, т.к. на данный момент Код: javascript 1. 2. 3. 4. Наступает в конце выполнения processdata.php. А в processdata.php код к примеру такой: Код: php 1. 2. 3. 4. 5. 6. 7. Как мне в каждой итерации цикла в processdata.php возвращать success обратно в JS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 18:21 |
|
||
|
Вывод информации в цикле с обновлением страницы на PHP
|
|||
|---|---|---|---|
|
#18+
Random2Как мне в каждой итерации цикла в processdata.php возвращать success обратно в JS?Никак. Более того, там цикл не нужен. Взяли данные о текущем проценте выполнения из базы/мемкеша/прочего и отдали. Все. Через секунду от клиента придет новый запрос - отдадите новые данные. По большому счету, этот скрипт вообще не нужен. Вы же озвучивали вариант сохранения процента выполнения в файле - вот и забирайте клиентом этот файл. Если же хотите чтоб именно php-скрипт был инициатором обновления данных на клиенте - смотрите в сторону comet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 20:08 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38403873&tid=1463417]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 332ms |

| 0 / 0 |
