php shell_exec触发一个作业两次

php shell_exec触发一个作业两次,php,bash,curl,shell-exec,Php,Bash,Curl,Shell Exec,有一个问题我找不到确切的问题,或者是一个我不知道的问题 我通过php中的shell_exec执行下面的命令。我是一个只打过一次电话的用户 curl-o./server.log--request POST'crawlserver.xxx.local/workerCallback.php'--用户代理'xxx'--数据'workerid=worker1&jobid=25&offercount=72&file='/path/to/xxx-2014-02-07-serialized.txt' 这个命令运

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

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

curl-o./server.log--request POST'crawlserver.xxx.local/workerCallback.php'--用户代理'xxx'--数据'workerid=worker1&jobid=25&offercount=72&file='/path/to/xxx-2014-02-07-serialized.txt'

这个命令运行了30秒

而当我要求bash作为
ps aux | grep workerCallback

我看到触发了两个不同的命令,以及不同的进程ID。但是,当查看server.log文件时,它只查看一个请求,我还检查了数据库和其他内容,该请求只运行了一次。但是为什么它会通过不同的PID在命令行中查看两次,并且命令之间没有什么区别。命令前的“sh-c”是什么

1000 27384 0.0 0 0.0 4404 612?S 14:00 0:00 sh-c curl-o./server.log--请求发布'crawlserver.xxx.local/workerCallback.php'--用户代理'xxx'--数据'workerid=worker1&jobid=25&offercount=72&file=path/to/xxx-2014-02-07-serialized.txt'

1000 27385 0.0 0 0.0 88056 3756?S 14:00 0:00 curl-o./server.log——请求发布crawlserver.xxx.local/workerCallback.php——用户代理xxx——数据workerid=worker1&jobid=25&offercount=72&file=/path/to/xxx-2014-02-07-serialized.txt


它不是两个相同的命令,第一个命令是运行curl命令的shell(sh)

第二个是命令本身


因此,您的代码工作正常:)

1。打开shell以执行命令2。exec command=2任务当您执行
ps aux | grep workerCallback
时,您也必须获得2-4个过程,一个是ps,一个是grep,一个(或多个)是结果Dan,我现在明白了。谢谢。结果显示它工作得很好:)但我不懂这里的逻辑。你能给我详细的解释吗?你必须考虑一下shell exec是做什么的。它使用shell(sh)来运行命令。在Linux中,当您运行任何命令时,您很可能使用诸如sh或更常见的bash之类的shell来执行这些命令。这就是这里发生的事情