如何在PHP中使用exec函数在后端运行命令?

时间:2017-05-31 11:30:33

标签: php curl exec

我正在使用下面的curl命令。 exec()函数执行大约需要60 ms,这会导致高响应时间。

curl -X POST -H 'Content-Type: application/json' --connect-timeout 1 -m 1 -d '<payload>' '<url>' > /dev/null 2>&1 &

1 个答案:

答案 0 :(得分:0)

您可以使用proc_open功能代替exec功能。您还可以通过在日志文件中打印来检查导致性能问题的原因。

$descriptorspec = array(
array('pipe', 'r'), // stdin
array('file', 'response.log', 'a'), // stdout
array('pipe', 'w'), // stderr
);

$env = array(
'PATH' => '/usr/local/bin' //Path to node bin dir
);

$proc = proc_open('wget -qO- --post-data "{YOUR POST DATA}" "{URL}" &', $descriptorspec, $pipes, __DIR__, $env);

if (is_resource($proc))
{
proc_close($proc);
}

**Example:**
$proc = proc_open('wget -qO- --post-data "id=' . $_POST["id"] . '" "http://www.example.com" &', $descriptorspec, $pipes, __DIR__, $env);