我有这行代码来执行后台任务(将几个png转换为jpg)
exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &");
现在我正在撰写convertToJpg.php
脚本,但我无法弄清楚如何从那里输出信息,以便将其记录到convert_to_jpg.log
。
当我尝试谷歌时,我想到的是如何从exec
或shell_exec
调用php脚本,因为用于描述这两种情况的词几乎相同。
澄清
将代码复制到SO时,我的代码中有一个额外的引用。我修好了。在原始代码中,convertToJpg.php
按预期调用,由error_logs
确认,以便进行检查。
有几个答案指向$output
中的exec()
参数。据我了解,这完全违背了使用>> path/to/convert_to_jpg.log
进行shell重定向的目的。
我的问题不是如何从exec()
命令获取输出,而是使用什么代码从convert_to_jpg.log
更多澄清
如果我打电话
exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &");
或
$results = shell_exec("path/to/php path/to/convertToJpg.php > /dev/null");
echo $results;
或
$results = "";
exec("path/to/php path/to/convertToJpg.php > /dev/null", $results);
print_r($results);
哪一个并不重要。
以下是convertToJpg.php
<?php
echo "Will this be in $results?"; // No, this did not end up in results.
error_log("error logs are being logged, so I know that this php file is being called");
//I have tested echo, but that does not work.
//What php function do I use so that a string will be captured in the $output of an exec() call?
?>
答案 0 :(得分:0)
$output = "";
$return_var = "";
exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &", $output, $return_var);
<强> $输出强>
如果输出参数存在,那么指定的数组将被命令的每一行输出填充。尾随空格(例如\ n)不包含在此数组中。请注意,如果数组已包含某些元素,则exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给exec()之前调用数组上的unset()。
<强> $ return_var 强>
如果return_var参数与输出参数一起出现,则执行命令的返回状态将写入此变量。
答案 1 :(得分:0)
好的,我明白了!
要简单回答问题,请使用echo
或print
。
这是我尝试过的第一件事,但它没有奏效,这让我觉得这是我应该调用的其他功能。 (我显然没有用过这么多)
我遇到的真正问题是> /dev/null
,它丢弃了所有输出。一旦我删除了它,它很好。在此解释:What is /dev/null 2>&1?
我曾经在某个时候完成了复制/粘贴而没有真正理解它的作用......
因为我指责错误的事情,我最终得到了这个基本问题。