5

I have two php scripts that need to be run as continuous back ground processes in WAMP server.

Wamp server is installed in window 7 PC. These scripts are already reside in separate folder in the www root directory.

Apache Version :2.2.8
PHP Version :5.2.6

Since this is not a unix platform I can't use nohup php script.php > /dev/null & command to do this job. I'm looking for similar kind of command or method which works in wamp server windows platform.

Can anyone explain the steps I need to be taken to do this task?

Lahiru Ruhunage
  • 351
  • 2
  • 10
  • 23

6 Answers6

11
  1. create a batch file to run your php script using php executable "C:\wamp\php\php.exe C:\wamp\www\index.php"
  2. add this batch file in Scheduled Task in Windows control panel.
Imran Naqvi
  • 2,202
  • 5
  • 26
  • 53
10

Simply use this function. It works under both OSs (Windows and Linux):

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

Here is an easy example of how to use the function:

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

In above example, we start script handleFeed.php that is located in folder named "feed" and we pass 2 parameters (database name and some other second parameter).

Develop4Life
  • 7,581
  • 8
  • 58
  • 76
Dejv
  • 944
  • 2
  • 14
  • 31
  • @Dejv , do we need to give any user permissions to run above script? Becuase when I run above script to insert some records in db it is saying below mysqli error. PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in D:\xampp\htdocs\adeptra\ping.php:10 Stack trace:, I was getting this error for both mysql / mysqli . Remaining all other files are working fine.Only I am getting issue with this background process. – user3408779 Nov 15 '18 at 15:28
  • @user3408779 This is probably not permissions related issue. Try [this](https://stackoverflow.com/a/25281540/1719108). – Dejv Nov 18 '18 at 21:58
  • Thanks for your comment, I will take a look – user3408779 Nov 19 '18 at 09:01
  • 1
    Under Windows, sometimes the process will close too fast before the sub-process ($cmd) initializes. A minor modification that can solve for this: $p = popen("start /B ". $cmd, "r"); sleep(5); pclose($p); – atyachin Nov 21 '19 at 14:42
0

This is what I did:

  1. PHP file

    <?php my code goes here ?>
    

    *Note if you are using HTTP API/CURL in CLI use dl("php_curl.dll");

    this loads curl into cli

  2. Now I added PHP to windows path variable, this can be done from My computer, properties, advanced settings, environment variables, new

  3. Next I created a .bat file, simply open a notepad & type code below and save as myfile.bat

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

    This site might help you on .bat file syntax.

  4. Now create a new scheduled task on windows & call the above .bat file as source,

Flexo
  • 87,323
  • 22
  • 191
  • 272
charles
  • 307
  • 5
  • 5
  • Please don't post the same answer twice - your answer had a number of formatting and spelling issues, duplicating it means these have to be fixed in two places instead of just one. You can however flag questions as exact duplicates if they are. – Flexo Jul 03 '12 at 06:20
0

Between this: http://php.net/manual/en/install.windows.commandline.php, and using the "at" utility, you ought to be able to get it working.

jcomeau_ictx
  • 37,688
  • 6
  • 92
  • 107
0

You can use "start" before start background script. Example:

create cron.cmd with

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

You can show man about the start command:

  1. Win-R
  2. type cmd
  3. type help start
Alex
  • 137
  • 6
0

/// we can execute PHP script file as a background process in the windows Xampp server using the below code.

<?php
    exec('C:\xampp\php\php.exe C:\xampp\htdocs\project\bg_script.php);
?>