导航:首页 > 编程语言 > php短信服务

php短信服务

发布时间:2023-08-13 13:22:25

php+MYSQL 实现队列 进行发送短信怎么做

最近遇到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?

但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低。

于是想到,用PHP和MySQL实现一个消息队列,一条一条的发送短信。下面介绍具体的实现方法:

首先,建立一个数据表sms,包含以下字段:

id,
phone, //手机号
content //短信内容
将需要发送的短信和手机号存入sms表中。

接下来,需要用PHP实现一个定时器,定时读取一条记录,并发送短信:

<?php
$db = new Db();
$sms = new Sms();
while(true){
$item = $db->getFirstRecord(); //获取数据表第一条记录
if(!$item){
//如果队列中没有数据,则结束定时器
break;
}
$res = $sms->send($item['phone'],$item['content']); //发送短信
if($res){
$db->deleteFristRecord(); //删除发送成功的记录
echo $item['phone'].'发送成功';
}else{
echo $item['phone'].'发送失败,稍后继续尝试';
}
sleep(10); //每隔十秒循环一次
}

echo '发送完毕!';
?>
将代码保存为timer_sms.php,打开命令行,执行定时器:

php timer_sms.php
好了,php定时器将会根据设定的时间间隔(这里设的是10秒),自动完成发送短信的任务。任务完成后将自动退出定时器,不再占用服务器资源。

根据我的测试,PHP定时器占用资源并不多,不会对服务器造成压力。而且是异步访问数据库,也不会影响数据库的运行。

这种方式的优点是:

1、后台运行,前台无需等待

2、成功率高,失败的记录会自动重发,直到成功

㈡ PHP如何定时发送短信

1、首先设置好服务器;

2、设置执行时间为无限制;

3、设置发送短信间隔为5分钟;

4、打开存储短信的文件,进行短信操作,关闭文件;

5、循环上面的过程;

6、具体设置代码如下:

ignore_user_abort();//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);//执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*5;//每隔5分钟运行
do{
$fp=fopen('test.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval);//等待5分钟
}while(true);
?>

㈢ PHP如何实现短信接口的调用

如下代码示例是阅信短信验证码平台为方便客户提供的短信接口请求的代码示例,使用前还需要用户提前申请API服务和在短信模板中新增加一个版块,并且审核通过。
<?php
date_default_timezone_set('PRC'); //设置时区为东八区否则时间比北京时间早8小时

$url = ' http://IP/端口号';//接口地址
$mttime=date("YmdHis");
$name = '*******';//开通的用户名
$password='*****************';//密码
$post_data['name'] = $name;
$post_data['pwd'] = md5($password.$mttime);
$post_data['content'] = '【阅信短信平台】验证码888888,打死也不能告诉别人哦。';
$post_data['phone'] = '12345678901';//手机号码
$post_data['subid'] = '';
$post_data['mttime']=$mttime;
$o = "";
foreach( $post_dataas $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = request_post($url, $post_data);
print $res;

/**

* 模拟post进行url请求
* @param string $url
* @param string $param
*/
functionrequest_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}

$postUrl= $url;
$curlPost= $param;
$ch= curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($ch,CURLOPT_HEADER, 0);//设置header
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且屏幕上
curl_setopt($ch,CURLOPT_POST, 1);//post提交方式
curl_setopt($ch,CURLOPT_POSTFIELDS, $curlPost);
$data= curl_exec($ch);//运行curl
curl_close($ch);

return $data;
}

㈣ 如何实现php手机短信验证功能

现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >

<html xmlns>

<head>

<title></title>

<script src="js/jquery-1.4a2.min.js" type="text/javascript"></script>

<script type="text/javascript">

/*-------------------------------------------*/

var InterValObj; //timer变量,控制时间

var count = 60; //间隔函数,1秒执行

var curCount;//当前剩余秒数

var code = ""; //验证码

var codeLength = 6;//验证码长度

function sendMessage() {

curCount = count;

var dealType; //验证方式

tel = $(’#tel’).val();

if(tel!=’’){

//验证手机有效性

var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+d{8})$/;

if(!myreg.test($(’#tel’).val()))

{

alert(’请输入有效的手机号码!’);

return false;

}

tel = $(’#tel’).val();

//产生验证码

for (var i = 0; i < codeLength; i++) {

code += parseInt(Math.random() * 9).toString();

}

//设置button效果,开始计时

$("#btnSendCode").attr("disabled", "true");

$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");

InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次

//向后台发送处理数据

$.ajax({

type: "POST", //用POST方式传输

dataType: "text", //数据格式:JSON

url: ’yanzhengma.php’, //目标地址(根据实际地址)

data: "&tel=" + tel + "&code=" + code,

error: function (XMLHttpRequest, textStatus, errorThrown) { },

success: function (msg){ }

});

}else{

alert(’请填写手机号码’);

}

}

//timer处理函数

function SetRemainTime() {

if (curCount == 0) {

window.clearInterval(InterValObj);//停止计时器

$("#btnSendCode").removeAttr("disabled");//启用按钮

$("#btnSendCode").val("重新发送验证码");

code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效

}

else {

curCount--;

$("#btnSendCode").val("请在" + curCount + "秒内输入验证码");

}

}

</script>

</head>

<body>

<input name="tel" id=tel type="text" />

<input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" /></p>

</body>

</html>


第三、调用短信服务器短信接口

整理的页面是yanzhengma.php(具体根据服务商提供信息)

<?php //提交短信

$post_data = array();

$post_data[’userid’] =短信服务商提供ID;

$post_data[’account’] = ’短信服务商提供用户名’;

$post_data[’password’] = ’短信服务商提供密码’;

// Session保存路径

$sessSavePath = dirname(__FILE__)."/../data/sessions/";

if(is_writeable($sessSavePath) && is_readable($sessSavePath)){

session_save_path($sessSavePath);

}

session_register(’mobliecode’);

$_SESSION[’mobilecode’] = $_POST["code"];

$content=’短信验证码:’.$_POST["code"].’【短信验证】’;

$post_data[’content’] = mb_convert_encoding($content,’utf-8’, ’gb2312’); //短信内容需要用urlencode编码下

$post_data[’mobile’] = $_POST["tel"];

$post_data[’sendtime’] = ’’; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值

$url=’http://IP:8888/sms.aspx?action=send’;

$o=’’;

foreach ($post_data as $k=>$v)

{

$o.="$k=".$v.’&’;

}

$post_data=substr($o,0,-1);

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。

$result = curl_exec($ch);

?>


第四:提交表单信息时对短信验证码验证

//手机验证码开始

session_start();

$svalitel = $_SESSION[’mobilecode’];

$vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel));

if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’)

{

ResetVdValue();

//echo "Pageviews=".$vdcodetel;

ShowMsg("手机验证码错误!", ’-1’);

exit();

}

㈤ thinkPHP怎么实现短信验证接口的调用

1、一般来说这个短信验证的功能都是要选择相关的公司付费来使用的。在使用的时候他会提供一个接口,你需要获取这个接口就可以了,一般都是封装为方法的, 你调用这个方法名称就OK了 ,
2、这个接口你只需要写一个来方法传参来调用这个接口的参数就可以了
比如:public function A(fang){
写方法
}
echo A(d);这样就可以了的

阅读全文

与php短信服务相关的资料

热点内容
安卓如何玩港服游戏 浏览:346
程序员如何换个城市生活 浏览:145
JS开发PDF 浏览:285
app格式不对怎么办 浏览:96
32位定时器单片机 浏览:332
安卓编译不能进行下一步签名 浏览:607
男生做保洁解压视频 浏览:750
qd88yg压缩机参数 浏览:385
pubg国际服服务器有什么区别 浏览:506
怎么打开文件夹自动删除 浏览:685
php中英文切换 浏览:445
php168数据 浏览:79
水压缩后有弹性 浏览:47
苏州阿里云服务器数据备份 浏览:524
消息提示音怎么设置安卓 浏览:279
怎么去掉安卓手机的小圆圈 浏览:476
女程序员每天教你一招 浏览:590
药剂学pdf下载 浏览:477
打开的共享文件夹少东西 浏览:643
芝麻黑头解压去除视频 浏览:186