[英]Php curl keep alive connection
根据: https : //help.nexmo.com/hc/en-us/articles/205065817-Can-I-send-multiple-SMS-in-a-single-API-request-
“请确保连接保持活动状态,以便在发送请求并充分利用帐户吞吐量(5 SMS /秒)时可以重新使用HTTP套接字。最佳实践是利用HTTP 1/1并保持连接状态因此,每次发送新请求时,您都无需打开另一个HTTP连接。”
我已经阅读了一些信息,以尝试使用curl保持连接状态,但是我无法使用HTTP套接字发送5条短信。
解决办法是什么 ?
我尝试过:
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
没有成功
我试图删除:
curl_close($ch);
也没有成功...
我无法找到一种好的方法来维持我的连接以便按nexmo的要求发送短信。
谁知道如何进行?
发送多个消息以及使用keep-alive
是两件分开的事情。 使用Nexmo(如FAQ所述),每个HTTP请求只能发送一个SMS。 要发送多个SMS,您只需发出多个HTTP请求。
默认情况下,Nexmo将允许您的帐户每秒向SMS API发出5个请求。 如果要最大程度地提高吞吐量,则需要确保尽可能快地发出请求(或者实际上,至少以5 /秒的速率限制速度发出请求)。
这就是keep-alive
作用,确保您尽快发送请求。 curl_setop
文档引用了一个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_setop()
设置一个具有不同数字/消息的新CURLOPT_URL
(重复使用curl句柄),默认情况下curl应该使用keep-alive
。
但请记住,这并不会改变你怎么发送多条消息与Nexmo,它只是一个优化上,你发送信息的速度的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.