我正在尝试在网页上运行一个将实时返回其输出的进程.例如,如果我运行'ping'进程,它应该在每次返回一个新行时更新我的页面(现在,当我使用exec(命令,输出)时,我被迫使用-c选项并等待进程完成以查看在我的网页上输出).有可能在PHP中这样做吗?
我也想知道当有人离开页面时,杀死这种过程的正确方法是什么.在"ping"过程中,我仍然可以看到系统监视器中运行的进程(有意义).
假设存在两个脚本Requester.php和Provider.php,并且Requester需要从Provider处理并向其发出http请求(Provider.php?data ="data").在这种情况下,Provider快速找到答案,但维护系统必须在整个数据库中执行各种更新.有没有办法立即将值返回给Requester,然后继续在Provider中处理.
Psuedo Code
Provider.php
{
$answer = getAnswer($_GET['data']);
echo $answer;
//SIGNAL TO REQUESTER THAT WE ARE FINISHED
processDBUpdates();
return;
}
Run Code Online (Sandbox Code Playgroud) 我有一组 bash 和 Perl 脚本
这在终端上运行良好。现在,我的客户请求此流程的 Web 界面。
例如,某些页面上的“创建新包”按钮将一一调用上述步骤,并将输出作为脚本回显返回给用户,而不是在整个脚本执行时。
是否可以将 bash 脚本的即时输出发送到通过程序执行函数(系统、exec、passthru ...或任何其他适合此流程的东西)调用它的网页或 php 脚本?
优雅为何要这么做?
在做这样的事情时我应该采取哪些安全预防措施(如果可能的话)?
编辑 经过一番搜索,我找到了部分解决方案,但仍然无法正常工作:
$cmd = 'cat ./password.txt|sudo -S ./setup.sh ';
$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 …Run Code Online (Sandbox Code Playgroud)