簡體   English   中英

執行后台外部程序

[英]Execute background external program

如果我有這樣的腳本:

<?php
system('notepad');
echo "END\n";

它打開記事本程序,但腳本停止,直到記事本結束。 我想在后台打開程序。 我試過這個:

system('notepad &');

但它的過程繼續阻止腳本。 我認為這是因為我的 shell 是 PowerShell,而不是 Bash 或類似的。 這可能嗎?

作為解決方法,您可以使用proc_open

<?php
$a_desc = [];
$a_pipe = [];
$r = proc_open('notepad', $a_desc, $a_pipe);
echo "END\n";
proc_close($r);

當您使用proc_open時,PHP 只會在您還調用proc_close時等待進程終止。 所以在上面的腳本中, END會提前打印 go,但是之后腳本仍然會掛起。 如果你想完全忘記這個過程,你可以省略proc_close

<?php
$a_desc = [];
$a_pipe = [];
proc_open('notepad', $a_desc, $a_pipe);
echo "END\n";

一般來說,您想要調用proc_close ,就像您的外部命令生成 output 一樣,那么 output 可能會在您擁有的任何內部echo語句之后打印出來。

https://php.net/function.proc-close

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM