结束 shell_exec 进程 PHP
Ending a shell_exec process PHP
几个小时以来一直在努力弄清楚这个问题。运气不好。
我正在尝试使用 shell_exec.
构建一个可以 运行 报告(运行后台脚本)的系统
以下代码启动 运行 报告的脚本:
shell_exec("php /var/www/html/lab-40/test/invoice_reminder.php");
现在我将如何使用 PHP 结束该脚本执行?
我试过像 PIDS 这样的东西,但我不知道我会怎么做。提前感谢您的帮助!
编辑:如果关闭了例如选项卡,我不会尝试结束进程。
基于shell_exec帮助页面上的这个comment(&
会将进程带到后台,echo $!
会打印进程PID):
<?php
function shell_exec_background(string $command): int {
return (int)shell_exec(
sprintf(
'nohup %s 1> /dev/null 2> /dev/null & echo $!',
$command
)
);
}
function is_pid_running(int $pid): bool {
exec(
sprintf(
'kill -0 %d 1> /dev/null 2> /dev/null',
$pid
),
$output,
$exit_code
);
return $exit_code === 0;
}
function kill_pid(int $pid): bool {
exec(
sprintf(
'kill -KILL %d 1> /dev/null 2> /dev/null',
$pid
),
$output,
$exit_code
);
return $exit_code === 0;
}
$pid = shell_exec_background('php /var/www/html/lab-40/test/invoice_reminder.php');
var_dump($pid);
var_dump(is_pid_running($pid));
var_dump(kill_pid($pid));
为了更好地控制子进程,请查看 PCNTL Functions and POSIX Functions。
几个小时以来一直在努力弄清楚这个问题。运气不好。
我正在尝试使用 shell_exec.
构建一个可以 运行 报告(运行后台脚本)的系统以下代码启动 运行 报告的脚本:
shell_exec("php /var/www/html/lab-40/test/invoice_reminder.php");
现在我将如何使用 PHP 结束该脚本执行?
我试过像 PIDS 这样的东西,但我不知道我会怎么做。提前感谢您的帮助!
编辑:如果关闭了例如选项卡,我不会尝试结束进程。
基于shell_exec帮助页面上的这个comment(&
会将进程带到后台,echo $!
会打印进程PID):
<?php
function shell_exec_background(string $command): int {
return (int)shell_exec(
sprintf(
'nohup %s 1> /dev/null 2> /dev/null & echo $!',
$command
)
);
}
function is_pid_running(int $pid): bool {
exec(
sprintf(
'kill -0 %d 1> /dev/null 2> /dev/null',
$pid
),
$output,
$exit_code
);
return $exit_code === 0;
}
function kill_pid(int $pid): bool {
exec(
sprintf(
'kill -KILL %d 1> /dev/null 2> /dev/null',
$pid
),
$output,
$exit_code
);
return $exit_code === 0;
}
$pid = shell_exec_background('php /var/www/html/lab-40/test/invoice_reminder.php');
var_dump($pid);
var_dump(is_pid_running($pid));
var_dump(kill_pid($pid));
为了更好地控制子进程,请查看 PCNTL Functions and POSIX Functions。