Geri arama ile cURL kullanarak bir eşzamansız şekilde bir istek yapmaya çalışıyorum. Bir siteden kopyaladığım bir kod parçası kullanıyorum.Geri çağırma ile PHP eşzamansız cURL
Tarayıcımda bu url'yi yazdığımda: http://www.myhost:3049/exemplo/index/async/, curl_post işlevini yürüten asyncAction işlevini yürütün.
/**
* 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/");
}
Sonra cURL YAPIN sadece test için, diğerleri işlev aynı sınıfta bir işlem yapmaya bu URL'ye cURL yürütün. Bu eylem, "CALLBACK" iletisiyle birlikte bir dize döndüren addAction'dır.
function addAction() {
sleep(15);
return "CALLBACK";
}
$ sonuç yanlıştır. Belki de sorun şu ki, cURL işlevinin aynı sınıftaki bir eylemi yürütmeyi denemeyi talep ediyorum. Ama yine de, hata mesajını nasıl alabilirim. Daha iyi bir çözüm var mı, test edildi ve geri çağırma ile asenkronize kullanım hakkında iyi bir açıklama var mı? Çünkü okuduğum şeyler iyi açıklanmadı ve ne zaman, geri çağırma olayının nasıl yönetileceğini açıklamıyor.
'add' komut şey yankı zorundadır. – Barmar
'curl', zaman uyumsuz değildir. – Barmar
Bu konuda google birçok makalede arama yaptım ve bazılarını asenkron CURL hakkında konuştuk. Örneğin bu sayfada bunlar hakkında konuşuyorlar: http://php.net/manual/pt_BR/function.curl-setopt.php –