waLongAction для cli

Есть аналог, когда надо в бэкграунде долгую операцию провернуть?

7 ответов

  • 4
    Евгений Леман 18 августа 2016 00:25 #

    По умолчанию нужно сделать ничего. На CLI дефолтное значение таймлимита - 0. Правда я на практике сталкивался с обычными 30 и приходилось просто ограничивать кол-во циклов(задача по костыльному импорту товаров по 1), сохраняя метку последнего выполненного, чтобы следующий запуск начать с нужного места.

    • +1
      km km 18 августа 2016 13:07 #

      По-умолчанию да, но часто еще есть настройки apache и другие факторы, которые обрубают долгие скрипты.

      А как делаете следующий запуск? По крону? А если крон раз в час настроен?

      • +1
        Syrnik.com Syrnik.com 18 августа 2016 14:20 #

        Настройки apache при выполнении cli по крону никак не влияют.

        В нынешней ситуации, кмк, можно рассчитывать на то, что у клиента время выполнения cli никак не ограничено. У меня, по крайней мере, пока не было жалоб на таймауты.

        Андрей Годин и Павел Макаров делали, кажется, "тяжелые" cli-контроллеры. Либо для каких-то выгрузках по API, либо для работы с VK. Кажется.

        • +1
          km km 18 августа 2016 15:32 #

          Точно? Просто документация предупреждает: http://php.net/manual/en/info.configuration.php#in...


          А если совсем тяжелые операции (минут на 20), то не сильно ли они затормозит обработку всех остальных запросов?

          • +2
            ITFrogs ITFrogs 26 августа 2016 02:24 #

            Нужно обязательно при старте делать самопроверку не запущена ли вторая копия. Иначе крон поставит раком хостинг. И еще советую в настройках плагина делать чекбоксик который прерывает выполнение на старте. Типа предохранителя. Причем читать этот параметр нужно напрямую из базы т.к. настройки плагинов кешируются.

        • +2
          ITFrogs ITFrogs 26 августа 2016 02:20 #

          Я сталкивался с прерыванием cli на timeweb. А так то да. На нормальном хостинге скрипт работает до морковкина заговения.

  • 2
    ITFrogs 26 августа 2016 02:18 #

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

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите