【问题标题】:php shell_exec triggers a job twicephp shell_exec 两次触发作业
【发布时间】:2014-03-04 20:41:43
【问题描述】:

有一个问题我找不到确切的问题,还是我不知道是不是一个问题。

我通过 php 中的 shell_exec 执行以下命令。我是只打过一次电话的用户。

curl -o ./server.log --request POST 'crawlserver.xxx.local/workerCallback.php' --user-agent 'xxx' --data 'workerid=worker1&jobid=25&offercount=72&file='/path/ to/xxx-2014-02-07-serialized.txt'

这个命令的工作时间大概是 30 秒。

当我要求以ps aux | grep workerCallback 抨击时

我看到触发了 2 个不同的命令,以及不同的进程 ID。但是当查看 server.log 文件时,它正在查看单个请求,我还检查了 db 和其他东西,请求工作单个。但是为什么它在命令行中通过不同的 pids 查找两次,并且命令几乎没有区别。命令前的“sh -c”是什么。

1000 27384 0.0 0.0 4404 612 ? S 14:00 0:00 sh -c curl -o ./server.log --request POST 'crawlserver.xxx.local/workerCallback.php' --user-agent 'xxx' --data 'workerid=worker1&jobid=25&offercount =72&file=path/to/xxx-2014-02-07-serialized.txt'

1000 27385 0.0 0.0 88056 3756 ? S 14:00 0:00 curl -o ./server.log --request POST crawlserver.xxx.local/workerCallback.php --user-agent xxx --data workerid=worker1&jobid=25&offercount=72&file=/path/to/ xxx-2014-02-07-serialized.txt

【问题讨论】:

  • 1.打开一个 shell 来执行命令 2. exec command = 2 个任务
  • 当你做ps aux | grep workerCallback时,你也必须得到2-4个进程,一个是ps,一个是grep,一个(或更多)是结果
  • 是的,丹,我现在明白了。谢谢。

标签: php bash curl shell-exec


【解决方案1】:

两次不是同一个命令,第一个命令是运行你的 curl 命令的 shell (sh)。

第二个是命令本身。

所以你的代码运行良好:)

【讨论】:

  • 结果显示它工作正常 :) 但我无法理解这里的逻辑,你能不能给我详细的解释?
  • 您必须考虑 shell exec 的作用。它使用 shell (sh) 来运行命令。在 Linux 中,当您运行任何命令时,您很可能使用诸如 sh 或更常见的 bash 之类的 shell 来执行此操作。这就是这里发生的事情
猜你喜欢
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多