可能是目前最聪明、优雅的PHP短信发送库了。从此不再为各种原因造成的个别短信发送失败而烦忧!
phpsms的任务均衡调度功能由toplan/task-balancer提供。
GitHub地址:https://github.com/toplan/phpsms
特点
- 支持发送均衡调度,可按代理器权重值均衡选择服务商发送。
- 支持语音验证码。
- 支持一个或多个备用代理器(服务商)。
- 允许推入队列,并自定义队列实现逻辑(与队列系统松散耦合)。
- 短信/语音发送前后钩子。
- 支持国内主流短信服务商。
- 自定义代理器和寄生代理器。
服务商
Luosimao | × | √ | √ | ¥850(1万条) | ¥0.085/条 |
云片网络 | × | √ | √ | ¥55(1千条) | ¥0.055/条 |
容联·云通讯 | √ | × | √ | 充值¥500 | ¥0.055/条 |
SUBMAIL | √ | × | × | ¥100(1千条) | ¥0.100/条 |
云之讯 | √ | × | √ | -- | ¥0.050/条 |
聚合数据 | √ | × | √ | -- | ¥0.035/条 |
阿里大鱼 | √ | × | √ | -- | ¥0.045/条 |
SendCloud | √ | × | √ | -- | ¥0.048/条 |
安装
安装开发中版本:
快速上手
1. 配置
- 配置代理器所需参数
为你需要用到的短信服务商(即代理器)配置必要的参数。可以在config\phpsms.php中键为agents的数组中配置,也可以手动在程序中设置,示例如下:
- 配置代理器调度方案
可在config\phpsms.php中键为scheme的数组中配置。也可以手动在程序中设置,示例如下:
调度方案解析: 如果按照以上配置,那么系统首次会尝试使用Luosimao或YunPian发送短信,且它们被使用的概率分别为2/3和1/3。 如果使用其中一个代理器发送失败,那么会启用备用代理器,按照配置可知备用代理器有YunPian和YunTongXun,那么会依次调用直到发送成功或无备用代理器可用。 值得注意的是,如果首次尝试的是YunPian,那么备用代理器将会只使用YunTongXun,也就是会排除使用过的代理器。
2. Enjoy it!
3. 在laravel中使用
如果你只想单纯的在laravel中使用phpsms的功能可以按如下步骤操作, 当然也为你准备了基于phpsms开发的laravel-sms
- 在config/app.php中引入服务提供器
- 生成配置文件
生成的配置文件为config/phpsms.php,然后在该文件中按提示配置。
- 使用
详见API,示例:
API
API - 全局配置
Sms::scheme([$name[, $scheme]])
设置/获取代理器的调度方案。
调度配置在调度系统启动后(创建Sms实例时会自动启动)就不能修改。
- 设置
手动设置代理器调度方案(优先级高于配置文件),如:
- 获取
通过该方法还能获取所有或指定代理器的调度方案,如:
scheme静态方法的更多使用方法见高级调度配置
Sms::config([$name[, $config][, $override]]);
设置/获取代理器的配置数据。
代理器参数配置在应用系统的整个运行过程中都是能修改的,这点和调度配置有所不同。
- 设置
手动设置代理器的配置数据(优先级高于配置文件),如:
- 获取
通过该方法还能获取所有或指定代理器的配置参数,如:
Sms::cleanScheme()
清空所有代理器的调度方案,请谨慎使用该接口。
Sms::cleanConfig()
清空所有代理器的配置数据,请谨慎使用该接口。
Sms::beforeSend($handler[, $override]);
发送前钩子,示例:
更多细节请查看task-balancer的“beforeRun”钩子
Sms::beforeAgentSend($handler [, $override]);
代理器发送前钩子,示例:
更多细节请查看task-balancer的“beforeDriverRun”钩子
Sms::afterAgentSend($handler [, $override]);
代理器发送后钩子,示例:
更多细节请查看task-balancer的“afterDriverRun”钩子
Sms::afterSend($handler [, $override]);
发送后钩子,示例:
更多细节请查看task-balancer的“afterRun”钩子
Sms::queue($enable, $handler)
该方法可以设置是否启用队列以及定义如何推送到队列。
$handler匿名函数可使用的参数:
- $sms : Sms实例
- $data : Sms实例中的短信数据,等同于$sms->getData()
定义如何推送到队列:
如果已经定义过如何推送到队列,还可以继续设置关闭/开启队列:
获取队列启用情况:
API - 发送相关
Sms::make()
生成发送短信的sms实例,并返回实例。
Sms::voice()
生成发送语音验证码的sms实例,并返回实例。
$sms->to($mobile)
设置发送给谁,并返回实例。
$sms->template($templates)
指定代理器设置模版id或批量设置,并返回实例。
$sms->data($data)
设置模板短信的模板数据,并返回实例对象,$data必须为数组。
通过template和data方法的组合除了可以实现模版短信的数据填充,还可以实现模版语音的数据填充。
$sms->content($text)
设置内容短信的内容,并返回实例对象。一些内置的代理器(如YunPian,Luosimao)使用的是内容短信(即直接发送短信内容),那么就需要为它们设置短信内容。
$sms->getData([$key])
获取Sms实例中的短信数据,不带参数时返回所有数据,其结构如下:
$sms->agent($name)
临时设置发送时使用的代理器(不会影响备用代理器的正常使用),并返回实例,$name为代理器名称。
通过该方法设置的代理器将获得绝对优先权,但只对当前短信实例有效。
$sms->send()
请求发送短信/语音验证码。
$result数据结构请参看task-balancer
高级调度配置
代理器的高级调度配置可以通过配置文件(config/phpsms.php)中的scheme项目配置,也可以通过scheme静态方法设置。 值得注意的是,高级调度配置的值的数据结构是数组。
指定代理器类
如果你自定义了一个代理器,类名不为FooAgent或者命名空间不为Toplan\PhpSms,那么你还可以在调度配置时指定你的代理器使用的类。
- 配置方式:
通过配置值中agentClass键来指定类名。
- 示例:
寄生代理器
如果你既不想使用内置的代理器,也不想创建文件写自定义代理器,那么寄生代理器或许是个好的选择,无需定义代理器类,只需在调度配置时定义好发送短信和语音验证码的方式即可。
- 配置方式:
通过配置值中sendSms和voiceVerify键来设置发送短信和语音验证码的方式。
- 示例:
自定义代理器
- step 1
配置项加入到config/phpsms.php中键为agents的数组里。
- step 2
新建一个继承Toplan\PhpSms\Agent抽象类的代理器类,建议代理器类名为FooAgent,建议命名空间为Toplan\PhpSms。 如果类名不为FooAgent或者命名空间不为Toplan\PhpSms,在使用该代理器时则需要指定代理器类,详见高级调度配置。
Change logs
v1.4.0
该系列版本相较与之前版本在api的设计上有些变动,具体如下:
-
修改原enable静态方法为scheme
-
修改原agents静态方法为config
-
修改原cleanEnableAgents静态方法为cleanScheme
-
修改原cleanAgentsConfig静态方法为cleanConfig
-
去掉getEnableAgents和getAgentsConfig静态方法
v1.5.0
- 改进语音信息的发送接口以适应阿里大鱼的通过文本转语音和语音文件id两个接口的需求
- 新加阿里大鱼(Alidayu)代理器
公告
- 如果在使用队列相关功能时出现如下错误:
可在/etc/php5/mods-available/xdebug.ini(Linux)中新加xdebug.max_nesting_level=500
Todo list
- 可用代理器分组配置功能;短信发送时选择分组进行发送的功能。
Encourage
hi, guys! 如果喜欢或者要收藏,欢迎star。如果要提供意见和bug,欢迎issue或提交pr。
License
MIT
相关推荐
phpsms 可能是目前最聪明、优雅的php短信发送库了。从此不再为各种原因造成的个别短信发送失败而烦忧! 特点: 支持短信/语音发送均衡调度,可按代理器权重值均衡选择服务商发送。 支持一个或多个备用代理器(服务商...
总结来说,phpsms是PHP开发者进行短信服务集成的理想选择,无论是在小型项目还是大型企业级应用中,都能发挥出其智能和优雅的特点,提高开发效率,确保短信发送的稳定性和可靠性。如果你在PHP开发中需要短信服务,...
标题中的“php编写的发送SMS消息的类”指的是一个用PHP编程语言开发的类库,其主要功能是发送短信(SMS)。这个类通常包含了处理短信服务提供商接口、短信编码、错误处理等核心功能,使得开发者能够轻松地在PHP应用...
在ASP中,你可以使用第三方库如Twilio或Clickatell来发送短信。首先,需要注册这些服务并获取API密钥。然后,通过HTTP POST请求发送短信,将手机号和验证码作为参数传递。ASP代码会处理请求,与服务提供商交互,并在...
实现短信验证功能,开发者通常会利用PHP的cURL库或者其他HTTP客户端库,如Guzzle,来发送POST请求到短信服务提供商的API。代码中可能包括生成验证码的逻辑、数据库操作以及与前端交互的部分。 6. **说明.txt**: ...
`phpSMS` 是一个基于 PHP 的开源脚本,专为开发者设计,用于通过集成各种免费短信服务提供商来发送短信。这个项目的核心目标是提供一个可定制、易于使用的解决方案,使得个人和企业能够利用这些免费资源进行短信通知...
- **编写短信服务类**:创建一个 SMS 服务类,封装发送和接收短信的方法,利用 SMPP 客户端库进行操作。 - **中间件**:为了确保短信服务的安全性,可以使用 Laravel 中间件来验证请求和处理错误。 - **路由与...
`phpsms`可能是PHP编写的短信模块,用于实现Web消息传递功能,它可能对接了第三方短信服务提供商,以便于发送和接收短信。而`ldapmgr`可能是 LDAP 管理模块的核心代码,负责与LDAP服务器交互,实现联系人数据的存取...