1

I can't use the $com = new Com('WScript.shell'); way, it's causing problems on my system. Probably I need to upgrade my PHP because it's very old (5.2), but I suppose what I'm trying to do is not version dependent.

I'm running PHP on Windows 2008 64-bit. Where I can run a command prefixed with start to run the command on a separate console.

start php myscript.php

If this is executed from the command line, it starts a new console for the script.

I need to do the same from PHP using exec only.

exec("CMD /C start php myscript.php");

/C is to terminate the CMD session when the script finishes.

But it's not giving the same results, it still waits for the script to terminate !

1 Answer 1

4

This shoul work:

exec("start /B php myscript.php");

Also close all standard streams at the very beginning of myscript.php:

fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);

If you want echo to still work, you can open a file for writing to stdout after closing the standard streams:

$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('myscript.log', 'wb');
Sign up to request clarification or add additional context in comments.

7 Comments

Thanks a lot the start /B perfectly. But what are the other fclose statements ?! I'm not a PHP dev btw :)
Windows would not let program go to background unless it closes all 3 standard streams.
Will this affect file logging or echo statements ?
File logging no, but echo statements yes - there's no stdout anymore. I'll update the answer with another solution.
On windows it's nul
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.