亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

php怎么異步執行shell腳本

小億
163
2023-12-29 19:19:30
欄目: 編程語言

在PHP中,可以使用exec()函數來執行shell腳本。但是exec()函數是同步的,即在執行完shell腳本之前,PHP腳本會一直等待。如果希望實現異步執行shell腳本,可以使用以下方法:

  1. 使用exec()函數結合&符號將腳本放入后臺執行,例如:
exec("your_script.sh > /dev/null 2>&1 &");

這里的> /dev/null 2>&1是將腳本的輸出重定向到空設備,&符號表示將腳本放入后臺執行。

  1. 使用shell_exec()函數結合nohup命令,例如:
shell_exec("nohup your_script.sh > /dev/null 2>&1 &");

nohup命令用于忽略HUP(掛起)信號,并將腳本放入后臺執行。

  1. 使用proc_open()函數來執行shell腳本并獲取進程句柄,然后使用stream_set_blocking()函數將其設置為非阻塞模式,實現異步執行。
$descriptorspec = array(
    0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
    1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
    2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open("your_script.sh", $descriptorspec, $pipes);

// 設置為非阻塞模式
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);

// 關閉不需要的管道
fclose($pipes[0]);

// 獲取腳本的輸出
$output = stream_get_contents($pipes[1]);
$error = stream_get_contents($pipes[2]);

// 關閉管道和進程
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

以上是幾種在PHP中實現異步執行shell腳本的方法,根據實際需求選擇合適的方法。

0
宁强县| 西丰县| 乐山市| 苗栗县| 右玉县| 会宁县| 三江| 浦县| 永清县| 锦屏县| 葫芦岛市| 都江堰市| 临夏市| 金坛市| 利川市| 丹凤县| 阿拉善右旗| 太仆寺旗| 周宁县| 阳新县| 内乡县| 湛江市| 卓尼县| 扶风县| 花莲县| 镇坪县| 娄底市| 瑞昌市| 明溪县| 巴彦淖尔市| 原平市| 瓮安县| 固阳县| 札达县| 舒兰市| 大渡口区| 应城市| 房产| 山阴县| 体育| 松江区|