ThinkPHP
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织。
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于:
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值…
Workerman_TCP
workerman与协议类交互流程
1、假设客户端发送一个数据包给服务端,服务端收到数据(可能是部分数据)后会立刻调用协议的input方法,用来检测这包的长度,input方法返回长度值$length给workerman框架。
2、workerman框架得到这个$length值后判断当前数据缓冲区中是否已经接收到$length长度的数据,如果没有就会继续等待数据,直到缓冲区中的数据长度不小于$length。
4、缓冲区的数据长度足够后,workerman就会从缓冲区截取出$length长度的数据(即分包),并调用协议的decode方法解包,解包后的数据为$data。
3、解包后workerman将数据$data以回调onMessage($connection, $data)的形式传递给业务,业务在onMessage里就可以使用$data变量得到客户端发来的完整并且已经解包的数据了。
4、当onMessage里业务需要通过调用$connection->send($buffer)方法给客户端发送数据时,workerman会自动利用协议的encode方法将$buffer打包后再发给客户端。
使用方法例如下面:
use Workerman\Worker;
require_once '/your/path/Workerman/Autoloader.php'
$json_worker = new Worker('JsonNL://0.0.0.0:1234');
$json_worker->onMessage = function($connection, $data) {
// $data就是客户端传来的数据,数据已经经过JsonNL::decode处理过
echo $data;
// $connection->send的数据会自动调用JsonNL::encode方法打包,然后发往客户端
$connection->send(array('code'=>0, 'msg'=>'ok'));
};
Worker::runAll();
...
--
邮箱通知
SendCloud官网:每天有免费邮件发信额度
使用第三方的邮件推送服务,易接入,送达率高,自定义发信域名(域名需备案)
/**
* 油箱满后邮件通知用户
*/
private function send_mail() {
$url = 'http://api.sendcloud.net/apiv2/mail/send';
$API_USER = SENDCLOUD_USER;
$API_KEY = SENDCLOUD_KEY;
$param = array(
'apiUser' => $API_USER, # 使用api_user和api_key进行验证
'apiKey' => $API_KEY,
'from' => 'jo@sendcloud.org', # 发信人,用正确邮件地址替代
'fromName' => 'PREC_Jo',
'to' => 'jo@precintl.com;elegzh@yeah.net;sky@precintl.com;kevin@precintl.com',# 收件人地址, 用正确邮件地址替代, 多个地址用';'分隔
'subject' => '油桶溢满警告_测试',
'html' => '支持富文本',
'respEmailId' => 'true'
);
$data = http_build_query($param);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $data
));
$context = stream_context_create($options);
$result = file_get_contents($url, FILE_TEXT, $context);
return $result;
}
MySQL数据库存储
用户名:*****
密码:*****
操作访问:http://IP:PORT/phpmyadmin
项目数据库:smart_oil_drum
现有表:device (详情见表字段,待增加user表)
表的CRUD操作 基于ThinkPHP的API,详见ThinkPHP文档