使用Twilio PHP库向2000+个号码发送批量短信



我与Twilio的PHP库集成,可以批量发送SMS消息。这对5-10个数字来说都很好,然而,当发送到数百个数字时,我在60秒后不断收到504超时错误。我已经创建了一个简单的表单,您可以在其中输入消息,提交给Twilio的API。我的集成打开了一个包含所有数字的CSV,并向每个数字发送消息。我遇到的问题是,60秒后我遇到504超时错误,因此只有200-300个号码收到我的短信。我该如何避免这种情况?有没有办法把结块分解成几批?

<?php
require __DIR__ . '/src/Twilio/autoload.php';
use TwilioRestClient;
// Your Account SID and Auth Token from twilio.com/console
$sid = 'xxxxxxxxxxxxxxx';
$token = 'xxxxxxxxxxxxx';
$notify_sid = 'xxxxxxxxxxxx';
$client = new Client($sid, $token);
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 100, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
$numbersFinal = "'".$data[$c] . "',";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Use the client to do fun stuff like send text messages!
$message = $_POST['message'];
$phoneNumbers = array($numbersFinal);
$to = array();
foreach ($phoneNumbers as $phoneNumber) { 
$to[] = '{"binding_type":"sms", "address":"'.$phoneNumber.'"}';
}
$request_data = [
"toBinding" => $to,
'body' => $message
];

// Create a notification
$notification = $client
->notify->services($notify_sid)
->notifications->create($request_data);
}
}
}

fclose($handle);
}
?>

504是一个超时错误。出现此错误的原因是php.ini设置。请检查phpinfo()输出。查找max_execution_time变量。大概是60秒。当您运行文件时,服务器会在超过此时间后终止进程。

要处理这个问题,您可以使用以下几种方法:

  1. 请您的服务提供商提高此限制。通常,他们会拒绝这些请求
  2. 您可以将此文件作为cron任务运行。当您单击发送按钮时,您可以将其保存为cronjob。你可以弄清楚的
  3. 当你点击发送,你可以发送短信100,100。。。send_sms.php?send=100可以发送100条短信,然后重定向到send_sms.php?发送=200…直到它们结束

告诉我这些解决方案中是否有适合您的。

最新更新