php怎么发送手机短信?

php怎么发送手机短信?,第1张

我已经申请成为移动SP。 移动给我以下资料: 企业代码: 服务代码: 短信网关IP地址: 登陆用户名: 密码: 下行端口: 上行端口: 协议:见附件 请问我怎么用PHP写往手机发短信的代码?

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

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

于是想到,用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、成功率高,失败的记录会自动重发,直到成功

你没法调移动。联通api的,如果要进行短信发送,可以去找短信接口,一般去运营商购买,然后他们提供api。然后用php对接即可,很简单,比如下面使用的就是某家的api发送:

$this->content = “发送内容”

$this->name = "短信账号"

$this->pwd= "短信密码"

$this->mobile = "发送的手机号"

$argv = array(

'name'=>$this->name, //必填参数。用户账号

'pwd'=>$this->pwd, //必填参数。(web平台:基本资料中的接口密码)

'content'=>$this->content, //必填参数。发送内容(1-500 个汉字)UTF-8编码

'mobile'=>$this->mobile, //必填参数。手机号码。多个以英文逗号隔开

'stime'=>'', //可选参数。发送时间,填写时已填写的时间发送,不填时为当前时间发送

'sign'=>$this->sign,//必填参数。用户签名。

'type'=>$this->type, //必填参数。固定值 pt

'extno'=>$this->extno//可选参数,扩展码,用户定义扩展码,只能为数字

)

//构造要post的字符串

foreach ($argv as $key=>$value) {

if ($flag!=0) {

$params .= "&"

$flag = 1

}

$params.= $key."="

$params.= urlencode($value)

$flag = 1

}

$url = "http://xxxxxxx.com?".$params//提交的url

$resultUrl = file_get_contents($url)//获取发送状态


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7083655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存