exec()继续执行命令Again and Again就像一个无限循环,尽管程序中没有循环

时间:2017-05-01 12:05:13

标签: php shell exec shell-exec tshark

ADDENDUM:以下问题中的问题是由 SECOND 命令引起的。当我注释掉第二个语句时,第一个语句按预期运行并产生预期结果。 :■

我需要从PHP同时运行两个终端命令,没有解决我的问题(如果你愿意,你可以看到herehere)。第一个命令应该运行Tshark 5秒并捕获网络流量(数据包)。第二个命令应该生成一些网络数据包并发送它们。整个想法是第二个命令产生的网络数据包应由Tshark捕获,由第一个命令启动。

换句话说,我需要在后台启动Tshark,而不是等待它完成,我需要运行第二个命令。

最后,如果我们使用 & 结束终端命令,我会在某处读到,命令在BACKGROUND 中运行,我们可以继续运行其他命令在前台。 我认为这是我问题的解决方案!

然后我编写了以下脚本。

问题:

当我在浏览器中执行此脚本时,网页会保持加载状态,并且加载永远不会完成。此外,显然,tshark继续在后台运行捕获数据包,而不是在5秒后停止。我之所以这么说是因为数据包继续添加到捕获文件中(capture.pcapcapture.txt - 存储数据包的文件,请参阅脚本中的命令)除非我手动结束浏览器中WEBPAGE的加载。

此外,当我手动停止加载网页并打开wireshark中的capture.pcap文件时,我看到应该由第二个命令发送的数据包已经发送了数百次。

问题:

  1. 这是否意味着两个命令一次又一次地运行,就像在无限循环中一样?

  2. 脚本中没有循环。那么为什么这种无限循环行为呢?我该如何解决这个问题?

  3. SCRIPT:

    shell_exec("tshark  -a duration:5  -w /var/www/html/Test/capture.pcap -V > capture.txt &");
    
    shell_exec("./mtu  -d0  -a43020008  -g43010008  -i987654321  -s'Mary'  2>&1");
    

0 个答案:

没有答案