0

根据:https ://help.nexmo.com/hc/en-us/articles/205065817-Can-I-send-multiple-SMS-in-a-single-API-request-

“确保保持连接处于活动状态,以便在发送请求时可以重用 HTTP 套接字并充分利用帐户吞吐量(5 条短信/秒)。最佳实践是利用 HTTP 1/1 和保持连接所以每次你发送一个新请求时,你不需要打开另一个 HTTP 连接。”

我已经阅读了一些信息以尝试使用 curl 保持连接,但我无法重用 http 套接字发送 5 条短信。

解决办法是什么 ?

我试过:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

没有成功。

我试图删除:

curl_close($ch);

也没有成功...

我无法找到一种保持连接状态的好方法,以便按照 nexmo 的要求发送短信。

谁知道如何进行?

4

1 回答 1

2

发送多条消息和使用keep-alive是两件不同的事情。使用 Nexmo(如常见问题解答所述),每个 HTTP 请求只能发送一条 SMS。要发送多个 SMS,您只需发出多个 HTTP 请求。

默认情况下,Nexmo 将允许您的帐户每秒向 SMS API 发出 5 个请求。如果您想最大化您的吞吐量,您需要确保尽可能快地发出请求(或者实际上,至少在 5/秒的速率限制下同样快)。

这就是keep-alive发挥作用的地方,确保您尽可能快地发送请求。curl_setop文档参考 a允许CURLOPT_FORBID_REUSE

TRUE 以强制连接在完成处理后显式关闭,并且不被池化以供重用。

因此,默认情况下,curl 会尝试使用keep-alive,假设您重用 curl 句柄。有关详细信息,请参阅此问题。

从这里的快速入门中借用此代码(披露,我是这些代码的作者):

<?php
$url = 'https://rest.nexmo.com/sms/json?' . http_build_query([
    'api_key' => API_KEY,
    'api_secret' => API_SECRET,
    'to' => YOUR_NUMBER,
    'from' => NEXMO_NUMBER,
    'text' => 'Hello from Nexmo'
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

如果您使用不同的数字/消息(重用 curl 句柄)curl_setop()设置新的,则默认情况下CURLOPT_URL应该使用 curl keep-alive

但请记住,这不会改变使用 Nexmo 发送多条消息的方式,它只是优化发送消息速度的一种方式。

于 2015-07-08T14:37:32.987 回答