加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP cURL同步和异步

发布时间:2020-05-25 08:52:47 所属栏目:PHP 来源:互联网
导读:我想在一个项目中使用 PHP cURL,在一个场景中我需要通过cURL发送数据并等待响应(并延迟所有代码,直到在cURL请求中收到响应) – 同步请求,我也想要发送数据异步的不同方案,而不是等待cURL请求完成. 是否有可用于发送数据ASYNC的cURL参数或函数,而不是等待目标U

我想在一个项目中使用 PHP cURL,在一个场景中我需要通过cURL发送数据并等待响应(并延迟所有代码,直到在cURL请求中收到响应) – 同步请求,我也想要发送数据异步的不同方案,而不是等待cURL请求完成.

是否有可用于发送数据ASYNC的cURL参数或函数,而不是等待目标URL的响应继续执行代码?

这是我现在的代码,默认情况下请求是同步的,脚本会等待,直到发送目标URL的响应.

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_POSTFIELDS,$data);
$result = curl_exec($ch);
curl_close($ch);

我的应用程序有两种情况:

1)数据需要传递到辅助服务器,一旦确认服务器收到它,继续在我的应用程序中执行代码;

2)数据传递到辅助服务器,但传递的信息不是那么重要,因此我们不需要等待服务器收到它的确认,以便继续.
谢谢

以下是PHP Docs中如何异步使用curl的示例:
<?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch1,"http://lxr.php.net/");
curl_setopt($ch1,CURLOPT_HEADER,0);
curl_setopt($ch2,"http://www.php.net/");
curl_setopt($ch2,0);

//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh,$active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh,$active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

//close the handles
curl_multi_remove_handle($mh,$ch1);
curl_multi_remove_handle($mh,$ch2);
curl_multi_close($mh);

?>

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读