cURL不是';t将脚本作为后台进程运行


cURL isn't running script as a background process

我整天都在摆弄cURL,无法让它以任何方式运行,因为我读到其他人让它运行。无论我怎么做,我的整个网站都会挂起,直到它完成处理。我甚至试过这样运行:

exec("curl -d $params $url -k &");

它仍然没有作为后台进程运行。现在,如果我在壳里这样做,那没关系。我现在完全迷路了。我今天已经尝试了很多方法,但无法将其作为后台进程运行。我现在很沮丧,因为它没有按应有的方式工作,我可能错过了一些小东西,但我就是找不到。代码很简单(目前):

$url = "path_to_script.php";
$params = "id=$id&etc=etc";
$command = "curl -d '"$params'" '"$url'" -k &";
exec($command);

被调用的脚本是这样的:

$id = $_POST['id'];
$etc = $_POST['etc'];
$temp = file_get_contents("remote file");
$fp = fopen('test.txt', 'w');
fwrite($fp, $temp);
fclose($fp);

它工作正常,只是file_get_contents需要30多秒才能完成,并且在完成之前整个服务器都会被冻结。这样重复大约70次。为什么它不作为后台进程运行?!?!

理想情况下,我想使用curl_multi同时处理它们,但我有让它在后台运行,而且显然无法正确执行。

Michael Mior是对的,您需要将输出重定向到某个地方。如果你不在乎它去哪里,应该做这样的事情:

exec("curl -d $params $url > /dev/null 2>&1");