Запустить php-скрипт в качестве фонового процесса на сервере Wamp

У меня есть два сценария php, которые необходимо запускать как непрерывные фоновые процессы на сервере WAMP.

Wamp-сервер устанавливается на ПК с windows 7. Эти сценарии уже находятся в отдельной папке в корневом каталоге www.

Версия Apache: 2.2.8
Версия PHP: 5.2.6

Поскольку это не платформа unix, я не могу использовать команду nohup php script.php > /dev/null & для выполнения этой работы. Я ищу подобную команду или метод, который работает на платформе Windows сервера wamp.

Может ли кто-нибудь объяснить, какие шаги мне нужно предпринять, чтобы выполнить эту задачу?


person Lahiru Ruhunage    schedule 20.11.2010    source источник
comment
Это не совсем вопрос программирования.   -  person Māris Kiseļovs    schedule 20.11.2010
comment
подумал, что это то место, где я должен опубликовать это. В любом случае очень ценю любую помощь ...   -  person Lahiru Ruhunage    schedule 20.11.2010


Ответы (6)


  1. создайте пакетный файл для запуска вашего php-скрипта, используя исполняемый файл php "C: \ wamp \ php \ php.exe C: \ wamp \ www \ index.php"
  2. добавьте этот командный файл в «Запланированное задание» в панели управления Windows.
person Imran Naqvi    schedule 20.11.2010
comment
Привет спасибо. Я просто создаю два файла bat, как вы сказали, и это работает. - person Lahiru Ruhunage; 17.12.2010

Просто воспользуйтесь этой функцией. Работает под обеими ОС (Windows и Linux):

function execInBackground($cmd){
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    }else{ 
        exec($cmd . " > /dev/null &");   
    } 
} 

Вот простой пример использования функции:

execInBackground('php feed/handleFeed.php db_name '.$second_param);

В приведенном выше примере мы запускаем скрипт handleFeed.php, который находится в папке с именем "feed", и передаем 2 параметра (имя базы данных и некоторые другой второй параметр).

person Dejv    schedule 18.11.2013
comment
@Dejv, нужно ли нам давать какие-либо права пользователя для запуска вышеуказанного скрипта? Потому что, когда я запускаю вышеупомянутый скрипт для вставки некоторых записей в db, он говорит об ошибке mysqli ниже. Неустранимая ошибка PHP: Неперехваченная ошибка: вызов неопределенной функции mysqli_connect () в D: \ xampp \ htdocs \ adeptra \ ping.php: 10 Трассировка стека :, Я получал эту ошибку для mysql / mysqli. Все остальные файлы работают нормально. Только у меня возникают проблемы с этим фоновым процессом. - person user3408779; 15.11.2018
comment
@ user3408779 Вероятно, проблема не связана с разрешениями. Попробуйте это. - person Dejv; 19.11.2018
comment
Спасибо за комментарий, посмотрю - person user3408779; 19.11.2018
comment
В Windows иногда процесс завершается слишком быстро до инициализации подпроцесса ($ cmd). Небольшая модификация, которая может решить эту проблему: $ p = popen (start / B. $ Cmd, r); сон (5); pclose ($ p); - person atyachin; 21.11.2019

Между этим: http://php.net/manual/en/install.windows.commandline.php, и с помощью утилиты at вы сможете заставить ее работать.

person jcomeau_ictx    schedule 20.11.2010

Вы можете использовать "start" перед запуском фонового скрипта. Пример:

создать cron.cmd с

start /B php.exe "path to your script 1"
start /B php.exe "path to your script 2"

Вы можете показать человеку команду запуска:

  1. Win - R
  2. тип cmd
  3. тип help start
person Alex    schedule 21.11.2010

Вот что я сделал:

  1. Файл PHP

    <?php my code goes here ?>
    

    * Обратите внимание, если вы используете HTTP API / CURL в CLI, используйте dl("php_curl.dll");

    это загружает curl в cli

  2. Теперь я добавил PHP в переменную пути Windows, это можно сделать из «Мой компьютер», свойств, дополнительных настроек, переменных среды, новых

  3. Затем я создал файл .bat, просто откройте блокнот и введите код ниже и сохраните его как myfile.bat.

    @ECHO OFF
    php -f d:\wamp\www\V3\task.php
    

    Этот сайт может помочь вам в синтаксисе файла .bat.

  4. Теперь создайте новую запланированную задачу в Windows и вызовите указанный выше файл .bat в качестве источника,

person charles    schedule 03.07.2012
comment
Пожалуйста, не публикуйте один и тот же ответ дважды - в вашем ответе был ряд проблем с форматированием и орфографией, дублирование означает, что их нужно исправить в двух местах, а не только в одном. Однако вы можете пометить вопросы как точные дубликаты, если они есть. - person Flexo; 03.07.2012

/// мы можем выполнить файл сценария PHP в качестве фонового процесса на сервере Windows Xampp, используя приведенный ниже код.

<?php
    exec('C:\xampp\php\php.exe C:\xampp\htdocs\project\bg_script.php);
?>
person Rutvik kakadiya    schedule 24.01.2020