За последние 24 часа нас посетили 52209 программистов и 1763 робота. Сейчас ищут 1027 программистов ...

Не отображать консоль при выполнении команды через exec

Тема в разделе "PHP для профи", создана пользователем exFAT, 27 янв 2017.

Метки:
  1. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте, я кроном запускаю через exec консольную команду вот как она выглядит:
    PHP:
    1. $result = exec(__DIR__ . '/phantomjs ' . __DIR__ . '/script.js ' . $login . ' ' . $pass);
    Проблема в том, что хотелось бы что бы этот скрипт выполнялся в фоновом режиме, но на винде у меня каждый раз как крон его дергает появляется консоль, которая мешает, потому что в тот момент я могу заниматься другими делами.
    Перепробовал уже кучу вариантов, ничего рабочего не нашел. Может что вы подскажете.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    в windows есть свой планировщик задач, можно использовать его
     
  3. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
  4. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @exFAT https://php.ru/manual/function.exec.html
    This will execute $cmd in the background (no cmd window) without PHP waiting for it to finish, on both Windows and Unix.

    PHP:
    1. <?php
    2. function execInBackground($cmd) {
    3.     if (substr(php_uname(), 0, 7) == "Windows"){
    4.         pclose(popen("start /B ". $cmd, "r"));
    5.     }
    6.     else {
    7.         exec($cmd . " > /dev/null &");
    8.     }
    9. }
    10. ?>
     
    #4 abrdabr, 28 янв 2017
    Последнее редактирование модератором: 28 янв 2017
  5. applicab

    applicab Активный пользователь

    С нами с:
    14 июл 2014
    Сообщения:
    73
    Симпатии:
    18
    PHP:
    1. $result = exec(__DIR__ . '/phantomjs ' . __DIR__ . '/script.js ' . $login . ' ' . $pass . ' > /dev/null &');
    я не знаю будет ли это в таком виде работать, но суть в том, что нужно перенаправить поток.
     
  6. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    че вы паритесь ? я уже ответил а топикстартер помойму забил на нас вот такой у меня ответ
    system - Выполняет внешнюю программу и отображает её вывод
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @applicab он на винде, как это ни смешно.
     
  8. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    Все эти варианты я перепробовал еще до того как создал здесь тему. Я с десяток вариантов с стековерфлоу перебрал.
     
  9. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    system в винде не пашет или что .. я просто из под винды не пробовал ее =)
     
  10. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    пашет, но так же выскакивает консоль.
     
  11. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    о минуту ... вам необходимо сделать просто чтобы она не появлялась на ВАШЕМ экране правильно ?
    --- Добавлено ---
    Запуск приложения в фоновом режиме (процесс будет доступен только в taskmgr)
    start "Заголовок окна" /b [Исполняемый файл] [Параметры исполняемого файла]
     
  12. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    Да, необходимо что бы консоль не появлялась вообще, на линухе она не появляется, но на винде выскакивает сбивая фокус. Если я например пишу сообщение на этом форуме и у меня срабатывает крон, то выскочит консоль, отработает и закроется, и откроется новая консоль(потому что у меня там цикл, нужно где то 100 раз запустить скрипт)
    Пробовал это тоже) все равно выскакивает.

    Я уже ее сделал 1х1 пиксель, плюс полупрозрачной, но она все равно мешает сбивая активное окно.
    Приходится использовать винду так как я любитель пошпилить в игрухи, а на линухе к сожалению нету версий этих приложений.
     
  13. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @exFAT на винде в папке пыха есть несколько программ тебе нужна php-win.exe которая не открывает консолль при выполнении пхп скрипта.
     
  14. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    Юзаю опенсервер, подскажи как выполнять через php-win.exe?
     
  15. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @exFAT эммм сча гляну мб но есть очень тупой вариант,- переименовать копию php-win.exe в php.exe
    & более тупой,- вынести окно за границы экрана, но вероятно будет изредка теряться фокус в играх
    && написать собственный крон))) тк в не вижу в опенсервере настроек крона // исходники крона не гуглятся можно использовать вместо крона стандартный "планировщик заданий"
     
    #15 abrdabr, 31 янв 2017
    Последнее редактирование: 31 янв 2017
  16. exFAT

    exFAT Новичок

    С нами с:
    27 янв 2017
    Сообщения:
    6
    Симпатии:
    0
    Спасибо, через пару часиков приду домой попробую.
     
  17. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    выясните - это окно результат чего .. результат запуска пхп или результат запуска скрипта в новом окне .. что вызывает это окно чтобы знать где и как скрывать.