Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php curl保持活动连接_Php_Curl_Throttling_Nexmo - Fatal编程技术网

Php curl保持活动连接

Php curl保持活动连接,php,curl,throttling,nexmo,Php,Curl,Throttling,Nexmo,根据: “请确保保持连接处于活动状态,以便在发送请求时可以重用HTTP套接字,并充分利用您的帐户吞吐量(5条短信/秒)。最佳做法是利用HTTP 1/1并保持连接处于活动状态,以便每次发送新请求时都不需要打开另一个HTTP连接。” 我已经阅读了一些信息,试图使用curl保持连接,但我无法使用http套接字发送5条短信 解决办法是什么 我试过: curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 没有成功 我试图删除: cu

根据:

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

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

解决办法是什么

我试过:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
没有成功

我试图删除:

curl_close($ch);
也没有成功

我无法找到一个好方法来保持我的连接,以便发送短信的nexmo需要


谁知道如何继续?

发送多条消息和使用
保持活动状态是两件不同的事情。使用Nexmo(如常见问题所述),每个HTTP请求只能发送一条短信。要发送多条SMS,您只需发出多个HTTP请求

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

这就是
保持活动状态
的作用,确保您尽可能快地发送请求。
curl\u setop
文档引用了一个
CURLOPT\u禁止重用
,它允许:

如果为TRUE,则在连接完成处理后强制显式关闭连接,而不是进行池化以供重用

因此,默认情况下,curl尝试使用
保持活动状态
,前提是重用curl句柄。有关这方面的更多详细信息,请参阅

从披露中借用此代码(我是这些代码的作者):


您是否尝试过设置
curl_setopt($ch,CURLOPT_HTTPHEADER,array(“连接:保持活动”)?@user3584460我还没试过。你是在你的代码中使用这个,还是只是一个建议?只是一个建议。如果我确信它在这种特殊情况下会起作用,我会发布一个答案。谢谢,在做一些测试之前,我会等待更多的建议。我将你的答案设置为良好,但我以不同的方式解决了我的问题。事实上,当从法国号码向法国接收者发送短信时,有一些限制。为了解决这个问题,我现在从一个加拿大号码发送短信。我现在没有速度限制。
<?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);