[英]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
語句之后打印出來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.