【问题标题】:Clickatell batch templates slow (PHP, http)Clickatell 批处理模板速度慢(PHP、http)
【发布时间】:2015-05-28 13:38:49
【问题描述】:

我目前正在尝试设置 clickatell 以发送批量短信。我已经让它工作了,但它很慢。发送 5 条测试短信大约需要 20 秒,发送 10 条测试短信大约需要 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>";
}

【问题讨论】:

    标签: php http clickatell


    【解决方案1】:

    您应该能够轻松地每秒向 HTTP API 提交超过 100 条消息。

    创建 HTTPS 连接是一个非常缓慢的过程(与 HTTP 相比)。如果您想使用 HTTPS 获得更好的性能,则必须重用连接。

    我猜 Utilities::getWebPage() 每次都在创建一个新的 HTTPS 连接?对于 PHP,我建议您使用 cURL。

    如果你想更进一步(我怀疑你需要走这么远),你可以考虑使用 curl_multi... 不过它的工作量更大,大多数人不需要这么快(有些人发现它更容易只是使用另一个 API,如 SMTP API,因此他们在 1 封电子邮件中有很多消息)。

    此外,从技术上讲,您不需要使用 HTTP API 上的批处理命令来发送消息(除非您愿意)。只需 api.clickatell.com/http/sendmsg?.... 就可以发送数百万美元?在这种情况下,无需进行启动批处理调用。

    使用 SMTP API 之类的东西,您可以在一封电子邮件中放入 100 000 条消息(如果您需要每条消息的唯一文本,您可以使用该 API 上的批处理工具)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多