Как определить активность скрипта на сервере

Тема в разделе "PHP", создана пользователем Festem, 4 сен 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Festem

    Festem Постоялец

    Регистр.:
    4 сен 2014
    Сообщения:
    97
    Симпатии:
    26
    Суть такова - у клиента стоит жесткое ограничение выполнение скриптов в 60 секунд (через браузер). При этом ему надо сделать глобальны сбор информации с кучей итераций, который выполняется от 180 до 250с. Я пришел к такому решению - сделал сам скрипт, который выполняет нужные манипуляции, и php файл-оболочку, который с помощью команды

    Код:
    shell_exec("php -f function.php > /dev/null 2>/dev/null &");
    
    запускает скрипт в обход ограничений. Все бы хорошо, но не могу решить вопрос как просигнализировать в браузер об окончании работы скрипта. Можно конечно после окончания писать в любой текстовый файл какую-то метку, и обновлять страницу раз в 30 секунд проверяя ее, но это как-то похоже больше на костыль. Может можно другим образом узнать об окончании работы скрипта, чтоб после этого загрузить файл вывода информации на экран?

    Выходит некое подобие клиент-сервера - серверный скрипт function.php выполняет сбор и обработку информации, а после этого клиент должен открыть файл inform.php и получить уже структурированную информацию.
     
  2. Unak

    Unak Создатель

    Регистр.:
    27 июл 2014
    Сообщения:
    42
    Симпатии:
    18
    Нет возможности увеличить макс. время выполнения и при этом доступна shell_exec?
    ini_set('max_execution_time',0);
    <IfModulemod_php5.c>
    php_value max_execution_time 300
    </IfModule>
    не спасает?

    Можно просто ajax'ом пинговать наличие файла результата выполнения, чтобы страницу не перезагружать каждый раз..
    Или разбить function.php на несколько менее длительных процессов.
     
    Последнее редактирование модератором: 4 сен 2015
    Festem нравится это.
  3. Festem

    Festem Постоялец

    Регистр.:
    4 сен 2014
    Сообщения:
    97
    Симпатии:
    26
    Увеличить нельзя никак. Командой через exec никак не проверить?
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Это один из тех приколов, когда над php потешаются более серьезные языки. Наиболее просто и кроссплатформено писать в некий внешний сервис: файл, мемкеш, БД.

    Для vps можно сделать сборку php с shmop http://php.net/manual/ru/book.shmop.php
     
    Последнее редактирование: 4 сен 2015
    antiterror и Festem нравится это.
Статус темы:
Закрыта.