2015-05-31 6 views
0

По:. https://help.nexmo.com/hc/en-us/articles/205065817-Can-I-send-multiple-SMS-in-a-single-API-request-Php локон сохранить живую связь

«Убедитесь в том, чтобы сохранить подключение к живым, так что вы можете использовать сокет HTTP при отправке запросов и в полной мере воспользоваться вашей учетной записи пропускной способности (5 SMS/секунды) Лучшей практикой является использование HTTP 1/1 и Keep-Alive для подключения, поэтому каждый раз, когда вы отправляете новый запрос, вам не нужно открывать другое HTTP-соединение ».

Я прочитал несколько информации, чтобы попытаться сохранить соединение, используя curl, но я не могу отправить 5 sms, повторно использующих http-сокет.

Какое решение?

Я попытался с:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 

Нет успеха.

Я пытался удалить:

curl_close($ch); 

Никакой успех тоже ...

Я не умею найти хороший способ сохранить живой мое соединение для отправки смс, nexmo требуется.

Кто знает, как продолжить?

+0

Вы пытались установить 'curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (" Connection: keep-alive "));'? – VolenD

+0

@ user3584460 Я еще не пробовал. Вы используете это в одном из своих кодов или это просто предложение? – zeflex

+0

Просто предложение. Если бы я был уверен, что это сработает в этом конкретном случае, я бы отправил ответ. – VolenD

ответ

2

Отправка нескольких сообщений и использование keep-alive - это две разные вещи. С Nexmo (как упоминается в FAQ) вы можете отправлять только одно SMS-сообщение по HTTP-запросу. Чтобы отправить несколько SMS-сообщений, вам просто нужно выполнить несколько HTTP-запросов.

По умолчанию Nexmo предоставит вашей учетной записи 5 запросов в секунду для SMS API. Если вы хотите максимизировать свою пропускную способность, вам нужно убедиться, что вы делаете запрос как можно быстрее (или действительно, по крайней мере, так быстро, что ограничение скорости 5/секунд).

Это то, что вступает в игру keep-alive, убедившись, что вы отправляете запросы как можно быстрее. В curl_setop документы ссылатьс на CURLOPT_FORBID_REUSE, которая позволяет:

TRUE, чтобы заставить соединение явным образом закрываются, когда он закончит обработку, а не быть объединены для повторного использования.

По умолчанию, curl пытается использовать keep-alive, предполагая, что вы повторно используете ручку завитка. См. 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 должен использовать keep-alive по умолчанию.

Но имейте в виду, это не меняет как вы отправить несколько сообщений с Nexmo, это просто способ оптимизировать скорость , на которой вы отправляете сообщения.

+0

Я поставил ваш ответ как хороший, но я решил свою проблему по-другому. Фактически, при отправке SMS с французского номера на французский приемник есть ограничения. Чтобы исправить эту проблему, я отправляю SMS-сообщение с канадского номера. У меня сейчас нет ограничений скорости. – zeflex