gpt4 book ai didi

php - 如何在php中获取 "at"shell命令输出?

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:32 25 4
gpt4 key购买 nike

我想运行 shell 的“at”命令并获取结果状态,我使用了以下脚本,该脚本在计划作业列表中添加一个条目并在一分钟后执行它(仅是一个示例):

try{
$output = shell_exec("at now + 1 minutes \n curl http://www.mysite.com/test.php?key=value");
echo $output;
}
catch (Exception $e) {
echo "Error :" . $e->getMessage();
}

命令执行得很好(我用“atq”shell命令检查了这一点,一分钟后页面test.php的脚本也按计划执行了)但是变量$output什么也没返回!

我使用了 exec、system 和 passthru 函数而不是 shell_exec,但总是没有任何输出。

我想要此函数的返回值来检索添加的作业 ID 并保留它以供以后使用(例如删除此作业)。

最佳答案

这样不行。使用换行符分隔的程序输入数据不是调用该程序的 shell 命令的一部分。一旦程序运行,这些数据需要传递到程序的 STDIN。

您必须打开程序并拥有标准输入和标准输出的资源指针。您可以从它们读取/写入

看看这个 php 函数的文档和示例:

http://www.php.net/manual/en/function.proc-open.php

至于“如何获取输出”:

这在某种程度上是无关紧要的,因为您无法像您希望的那样使用该程序。但如果您只想从 STDOUT 捕获/传递数据,则可以使用 passthru()。您可以打开输出缓冲来捕获输出。例如,如果您想在调用 rsync 的 php-cli 脚本中显示 rsync 的状态栏,那么它很有用。

关于php - 如何在php中获取 "at"shell命令输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com