Скрипт показывающий информацию о своем выполнени

RolCom

Новичок
Скрипт показывающий информацию о своем выполнени

Сабж. Бывают такие вещи, запустишь скрипт, а он тебе пишет в диве на страннице, делаю то-то то-то, иногда еще кнопка отмены бывает. Как такое сделать? Клиентскую часть, ajax, представляю как делать.
 

dimagolov

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

RolCom

Новичок
Можно поподробнее? Как запустить процесс?
Может быть, есть статьи по сабжу?
 

dimagolov

Новичок
кстати, идея про ignore_user_abort() напомнила мне про такой прогресс "для бедных". работает через iframe, выводит каждый раз значение % прогресса, блок комментария на 2Кб (чтобы разные глупые браузеры, которые парсят вывод блоками выводили сразу) и JS в пару строк, который скролит контент вниз, к текущему проценту.

п.с. не помню, как правильно писать этот JS, то ли просто ставя запредельный скролл, то ли ставя якоря и меняя location.href. Нюанс в том, что дерево DOM будет в тот момент еще не полностью сформировано и не любой код прокатит.
 

Alexandre

PHPПенсионер
Только в скрипте должен быть оключен таймаут и юзераборт.

set_time_limit()
ignore_user_abort()
так не надо делать

в остальном dimagolov правильно подсказывает мысль

лично я делал через файл, в файл писал статус процесса (прям в JSON ) и AJAXсом тянул файл и отображал в Диве или можно в прогресс-бар.

если процесс сильно долгоиграющий, то я его запускал в бэдграунде
таким вот образом: http://code.google.com/p/php-forker/.

для сильно продвинутых: писать можно JSON непосредственно в мемкеш и AJAXсом читать напрямую из мемкеша, минуя РНР :)
 

RolCom

Новичок
Alexandre
http://code.google.com/p/php-forker/
Насколько я понял, для этого что-то надо дополнительно к PHP ставить?
 

Alexandre

PHPПенсионер
Насколько я понял, для этого что-то надо дополнительно к PHP ставить?
не для PHP а просто поставить в любой директории, но лучше той где лежат бинарники /usr/local/bin.
собирается бинарник php-forker - который запускает PHP-cli вместе с указанным скриптом и параметром в режиме демона.

fixxxer недавно в обсуждении написал похожий скрипт на php
 

RolCom

Новичок
Ну и на хостинге, ес-тесно. CMS, в которой я эту фичу увидел, умеет делать сабж и на хостинге, и на денвере.
 

vovanium

Новичок
dimagolov
п.с. не помню, как правильно писать этот JS, то ли просто ставя запредельный скролл
раньше в основном запределельный скрол юзали,
а сейчас лог-файл сролится так datadiv.scrollTop = datadiv.scrollHeight :)

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

no_santa

Снегур
Создай файлик в папочке
Папочка - имя процесса, относительно CMS
Имя файлика - %% прогресса
Читай каждые 1-30 секунд имя файлика... :)
 
Сверху