2

現在、バッチ SMS を送信するために clickatell をセットアップしようとしています。動作していますが、かなり遅いです。5回のテストSMS送信に約20秒、10回のテストSMS送信に30秒。

$nums = array(
"44-227811116" => "1",
"44-227819885" => "2",
"44-227819314" => "3",
"44-227815413" => "4",
"44-227819326" => "5"
);

//login
$url="https://api.clickatell.com/http/auth?api_id=xxxxx&user=xxxxx&password=xxxxx";
$page=Utilities::getWebPage($url);

//session
$clicksessionparts=explode(":", $page);
$clicksession=trim($clicksessionparts[1]);

//batch
$from=xxxxx;
$batchTemplate = urlencode("Test message #field1#");

$url="https://api.clickatell.com/http_batch/startbatch?session_id=$clicksession&template=$batchTemplate&from=$from&deliv_ack=1";
$page=Utilities::getWebPage($url);
$batchId=explode(":",$page);
$batchId=trim($batchId[1]);

foreach ($nums as $k => $v)
{
$start = new DateTime();
print_r($start->format("H i:s"));
$url="https://api.clickatell.com/http_batch/senditem?session_id=$clicksession&batch_id=$batchId&to=xxxxx&field1=$v";
$page=Utilities::getWebPage($url);
echo "<pre>";
print_r($page);
echo "</pre>";
$end = new DateTime();
print_r($end->format("H i:s"));
echo "<br><br>";
}
4

1 に答える 1

2

1 秒あたり 100 件を超えるメッセージを HTTP API に快適に送信できるはずです。

HTTPS 接続の作成は、(HTTP と比較して) 非常に遅いプロセスです。HTTPS でより良いパフォーマンスが必要な場合は、接続を再利用する必要があります。

Utilities::getWebPage() が毎回新しい HTTPS 接続を作成していると思いますか? PHP については、cURL の使用を検討することをお勧めします。

もう一歩先に進みたい場合 (ここまで行く必要があるとは思えません)、curl_multi の使用を検討できます... ただし、もう少し作業が必要であり、ほとんどの人はそれほど速度を必要としません (別のものを使用するだけで簡単だと感じる人もいます)。 SMTP API のような API であるため、1 つのメールに多くのメッセージが含まれます)。

また、技術的には、HTTP API でバッチ コマンドを使用してメッセージを送信する必要はありません (必要な場合を除きます)。api.clickatell.com/http/sendmsg?....だけで何百万も送信できます。この場合、開始バッチ呼び出しを行う必要はありません。

SMTP API のようなものを使用すると、1 つの電子メールに 100,000 メッセージを入れることができます (メッセージごとに一意のテキストが必要な場合は、その API のバッチ機能を使用します)。

于 2015-05-29T08:12:57.800 に答える