根据:https://help.nexmo.com/hc/en-us/articles/205065817-Can-I-send-multiple-SMS-in-a-single-API-request-
"确保您的连接保持活动状态,这样您就可以在发送请求时重用HTTP套接字并充分利用您的帐户吞吐量(5个SMS /秒)。最佳做法是利用HTTP 1/1和Keep-Alive连接,这样每次发送新请求时,您都不需要打开另一个HTTP连接。"
我已经阅读了几个infos尝试使用curl保持连接,但我无法发送5个sms重用http套接字。
解决方案是什么?
我尝试过:
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
没有成功。
我试图删除:
curl_close($ch);
也没有成功......
我无法找到保持连接的好方法,以便按照nexmo的要求发送短信。
谁知道如何继续?
答案 0 :(得分:2)
发送多条消息,使用keep-alive
是两个不同的事情。使用Nexmo(作为常见问题解答提及),您只能为每个HTTP请求发送一条SMS。要发送多条SMS,您只需要发出多个HTTP请求。
默认情况下,Nexmo允许您的帐户每秒向SMS API发出5个请求。如果您想最大限度地提高吞吐量,您需要确保尽可能快地提出请求(或者实际上,至少以5 /秒的速率限制)。
keep-alive
发挥作用的地方,确保您尽快发送请求。 curl_setop
文档引用了CURLOPT_FORBID_REUSE
,允许:
TRUE强制连接在处理完成后显式关闭,而不是合并重用。
因此,默认情况下,curl正在尝试使用keep-alive
,假设您重用了curl句柄。有关详细信息,请参阅this question。
借用quickstarts here中的此代码(披露,我是其中的作者):
<?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_setop()
设置具有不同号码/消息的新CURLOPT_URL
(重复使用curl句柄),则curl默认情况下应使用keep-alive
。
但请记住,这并不会改变 您使用Nexmo发送多条消息,这只是优化速度的一种方式您在哪里发送消息。