/ / cURL nie uruchamia skryptu jako procesu w tle - php, curl

cURL nie uruchamia skryptu jako procesu w tle - php, curl

Przez cały dzień bawiłem się cURL iNIE mogę sprawić, by zachowywał się w jakikolwiek sposób, ponieważ przeczytałem, że inni ludzie go uruchomili. Bez względu na to, jak to robię, cała moja witryna zawiesza się, dopóki nie zakończy przetwarzania. Próbowałem nawet uruchomić go w następujący sposób:

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

Wciąż NIE działało jako proces w tle. Teraz, jeśli zrobię to w skorupce, będzie dobrze. Teraz jestem całkowicie zagubiony. Próbowałem dzisiaj tak wielu metod i nie mogę tego uruchomić jako procesu w tle. Jestem teraz tak sfrustrowany, że nie działa tak, jak powinien, pewnie brakuje mi czegoś małego, ale po prostu nie mogę go znaleźć. Kod jest prosty (na razie):

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

Wywoływany skrypt to:

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

Działa poprawnie, z wyjątkiem tego, żefile_get_contents trwa ponad 30 sekund, a cały serwer jest zamrożony, dopóki się nie skończy. Jest to powtarzane około 70 razy. Dlaczego nie działa jako proces w tle?!?!

Idealnie chcę użyć curl_multi do przetwarzania ich wszystkich jednocześnie, ale ja mieć aby działał w tle i po prostu nie robię tego poprawnie.

Odpowiedzi:

3 dla odpowiedzi № 1

Michael Mior ma rację, musisz gdzieś przekierować wyjście. Jeśli nie zależy ci na tym, dokąd to idzie, coś takiego powinno zrobić:

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