首页 > 解决方案 > 带有 mtr traceroute 的 PHP exec 函数等待响应

问题描述

我正在使用execPHP 中的函数来运行 Linuxmtr命令(用于 traceroutes),但是当我运行它时,当我将域传递给命令时,我得到状态代码1,但是如果我传递--help标志或--version标志,那么我立即获得结果,并显示在我的 JSON 中。

我怎样才能让exec函数基本上等到它返回跟踪路由的结果,因为我担心这是这里的问题?

作品:给我一个代码 0 和一个结果

$cmd = 'mtr --help';
exec($cmd, $out, $code);

作品:给我一个代码 0 和一个结果

$cmd = 'mtr --version';
exec($cmd, $out, $code);

失败:给我一个代码 1 并且没有结果

$cmd = 'mtr --json google.com';
exec($cmd, $out, $code);

失败:给我一个代码 1 并且没有结果

$cmd = 'mtr google.com';
exec($cmd, $out, $code);

如果我从命令行运行mtr,上面所有失败的都将按预期工作,当然,traceroute 可能需要长达 30 秒才能运行,但肯定会exec等待吗?

我该如何解决这个问题?

标签: phpexectraceroutemtr

解决方案


推荐阅读