Альтернатива CURL из-за длительного ожидания

Привет, ребята. В настоящее время я запускаю PHP-скрипт, используя CURL для отправки данных на другой сервер, чтобы запустить PHP-скрипт, который может занять до минуты. Этот сервер не возвращает данные. Но CURL-запрос все равно должен дождаться завершения, а затем загрузит остальную часть страницы orignal. Я хотел бы, чтобы мой PHP-скрипт просто отправлял данные на другой сервер, а затем не дождался ответа.

Итак, мой вопрос: как мне это решить? Я читал, что CURL всегда должен ждать. Каковы ваши предложения?

Спасибо!

Это может быть полезной отправной точкой, грубо отпечатанной здесь

 function curl_post_async($url, $params) { foreach ($params as $key => &$val) { if (is_array($val)) $val = implode(',', $val); $post_params[] = $key.'='.urlencode($val); } $post_string = implode('&', $post_params); $parts=parse_url($url); $fp = fsockopen($parts['host'], isset($parts['port'])?$parts['port']:80, $errno, $errstr, 30); //pete_assert(($fp!=0), "Couldn't open a socket to ".$url." (".$errstr.")");(optional) $out = "POST ".$parts['path']." HTTP/1.1\r\n"; $out.= "Host: ".$parts['host']."\r\n"; $out.= "Content-Type: application/x-www-form-urlencoded\r\n"; $out.= "Content-Length: ".strlen($post_string)."\r\n"; $out.= "Connection: Close\r\n\r\n"; if (isset($post_string)) $out.= $post_string; fwrite($fp, $out); fclose($fp); } 

http://php.net/manual/en/function.fsockopen.php

 $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno) 
\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); }

Вы можете создать сокет сервера на другом компьютере, к которому подключается ваша веб-страница PHP. Таким образом, вы определяете протокол. В противном случае проверьте, соответствует ли фоновый процесс вашим потребностям.

Я думаю, что вы можете установить максимальное время выполнения в php, чтобы остановить работу скрипта по истечении срока. Это не «про» решение, но оно работает!

Лучше использовать флаг TIMEOUT для выхода в течение периода времени.

 curl_easy_setopt(curl, CURLOPT_TIMEOUT, sec); // sec is int variable 

Это был код C, приспособился.