Tôi đang cố thực hiện yêu cầu bằng cách sử dụng cURL theo cách không đồng bộ với gọi lại. Tôi đang sử dụng một đoạn mã mà tôi sao chép từ một trang web.PHP không đồng bộ cURL với gọi lại
Khi tôi viết trong trình duyệt của tôi url này: http://www.myhost:3049/exemplo/index/async/ thực thi hàm asyncAction thực thi hàm 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/");
}
Sau đó, cURL thực thi cURL với URL đó để thực hiện tác vụ NOW trong cùng lớp mà chức năng khác thực hiện, chỉ để thử nghiệm. Hành động này là addAction, mà chỉ trả về một chuỗi với thông báo "CALLBACK".
function addAction() {
sleep(15);
return "CALLBACK";
}
Kết quả $ chỉ trả về sai. Có thể vấn đề là tôi đang yêu cầu thử thực hiện một hành động trong cùng một lớp với hàm cURL. Nhưng dù sao, làm thế nào tôi có thể nhận được thông báo lỗi. Có giải pháp nào tốt hơn, được thử nghiệm và giải thích tốt về việc sử dụng không đồng bộ với tính năng gọi lại không? Bởi vì những thứ tôi đọc không được giải thích rõ ràng và cũng không giải thích được khi nào, cách quản lý điều gọi lại.
Lệnh 'add' kịch bản có echo một cái gì đó. – Barmar
'curl' không phải là không đồng bộ. – Barmar
tôi đã tìm kiếm trong google nhiều bài viết về nó và tôi thấy một số người trong số họ nói về cURL không đồng bộ. Ví dụ trong trang này họ đang nói về điều này: http://php.net/manual/pt_BR/function.curl-setopt.php –