Я пытаюсь выполнить запрос с использованием cURL асинхронным способом с обратным вызовом. Я использую кусок кода, который я копирую с сайта.PHP асинхронный cURL с обратным вызовом
Когда я пишу в своем браузере этот url: http://www.myhost:3049/exemplo/index/async/, он выполняет функцию asyncAction, которая выполняет функцию curl_post.
/**
* Send a POST requst using cURL
* @param string $url to request
* @param array $post values to send
* @param array $options for cURL
* @return string
*/
function curl_post($url, array $post = NULL, array $options = array())
{
$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 4,
CURLOPT_POSTFIELDS => http_build_query($post)
);
$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
if(! $result = curl_exec($ch))
{
$result = curl_error($ch);
}
curl_close($ch);
return $result;
}
public function asyncAction() {
$this->curl_post("http://www.myhost:3049/exemplo/index/add/");
}
Затем локоны выполнить Curl к этому URL, чтобы выполнить действие, которое сейчас находится в том же классе, что другие функции, только для тестирования. Это действие addAction, которое просто возвращает строку с сообщением «CALLBACK».
function addAction() {
sleep(15);
return "CALLBACK";
}
Результат $ возвращает только false. Возможно, проблема в том, что я прошу выполнить попытку выполнить действие, которое находится в том же классе, что и функция cURL. Но в любом случае, как я могу получить сообщение об ошибке. Есть ли лучшее решение, проверено и с хорошим объяснением об использовании в качестве асинхронного с обратным вызовом? Потому что то, что я читаю, не очень хорошо объяснено, а также не объясняет, когда, как управлять обратным вызовом.
Параметр 'add' сценарий должен повторить что-то. – Barmar
'rotl' не является асинхронным. – Barmar
Я искал в google много статей об этом, и я обнаружил, что некоторые из них говорят об асинхронном cURL. Например, на этой странице они говорят об этом: http://php.net/manual/pt_BR/function.curl-setopt.php –