cURL没有将脚本作为后台进程运行

时间:2011-06-14 20:00:03

标签: php curl

我整天都在乱用cURL,并且不能让它以任何方式表现,因为我读过其他人的工作。无论我怎么做,我的整个网站都会挂起,直到它完成处理。我甚至尝试过运行它:

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

它仍然没有作为后台进程运行。现在,如果我在shell中执行此操作,那很好。我现在完全失去了。我今天尝试了很多方法,无法将其作为后台进程运行。我现在非常沮丧,因为它不应该像我应该的那样工作,我可能会遗漏一些小东西,但我找不到它。代码很简单(暂时):

$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同时处理它们,但我让它在后台运行,而且我只是没有正确地执行它。

1 个答案:

答案 0 :(得分:3)

迈克尔·米尔是对的,你需要将输出重定向到某个地方。如果你不关心它的去向,那么应该这样:

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