1
timothyye 2017-05-09 08:18:29 +08:00 via Android
售货机如果网络问题,掉线,或者自身程序出了问题,也没法 get 你某个链接了吧 ?
可以换个思路,考虑售货机固定时间调用你们某个 url,类似于心跳的形式,表示正常。写个监控程序,如果某个售货机长时间没有心跳信息,就表示出了问题,这个时候由你们的监控程序发告警邮件。 |
2
Eleutherios 2017-05-09 08:20:48 +08:00 via iPhone
http post 的话,国外有 Sendgrid
https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html |
3
noah1987 OP @timothyye 这样不行。因为有些是我们调试用的,有些客户那买了又暂时闲置。如果判断售货机很久没心跳就认为它异常,那我们工作量太大了。
|
4
Fishdrowned 2017-05-09 08:46:10 +08:00 via Android
“其中有一个要求是如果售货机多久跟本公司服务器失去联系”
1 楼的方法是正解 |
5
sciooga 2017-05-09 08:55:47 +08:00 via Android
一直用 mailgun 提供 API 发送邮件
不过楼主逻辑有些难理解... 那一直发邮件不就相当于一直有心跳包吗?找异常的反过来还是没心跳包那些机器,这样你反倒还收到了一大堆“正常”的邮件,判断起来更麻烦了 |
7
ss098 2017-05-09 09:07:48 +08:00
考虑到闲置,也许基于 1 楼的思路上加条件:这台设备曾联系过服务器且最近一天内没有通知过服务器,就触发警报,是不是可以解决呢?
|
8
StevenTong 2017-05-09 09:10:10 +08:00
不理解楼主的逻辑 发邮件和发心跳包有什么区别?到底怎么样算异常的逻辑你们后台自己去想呀
|
9
momocraft 2017-05-09 09:12:28 +08:00
失去联系后还依赖网络听起来颇不可靠,可以试试用 1 楼的心跳,并且检测上升沿
|
10
wizardoz 2017-05-09 09:13:22 +08:00
如果是我的话我会把消息推送到消息队列,订阅端再实现发送邮件,如果将来觉得邮件不好,要改成短信或者微信,不需要改业务机上的代码,实现新的订阅端就可以。
|
11
lifeintools 2017-05-09 09:13:52 +08:00 via iPhone
心跳
|
13
wly19960911 2017-05-09 09:17:57 +08:00 via Android
@noah1987 那为什么不对自己服务器发起心跳?由一个单独服务器模拟通信…并且发邮件
|
14
noah1987 OP @wly19960911 现在打算搞个额外的虚拟主机用来接收售货机的 http 请求并通过 mailgun 发邮件。
在考虑如何实现。我一直在用 c,对 php 等跟互联网打交道的东西并不熟。。。 |
15
wly19960911 2017-05-09 09:36:52 +08:00 via Android
@noah1987 如果硬要这样我感觉没必要做成 get/post 一下就发邮件,把一段的信息储存进数据库查出来,定时发送上一个时段的信息,一个时段根据信息量大小切割成几个发送。
|
16
reus 2017-05-09 09:40:41 +08:00
你招个稍微靠谱的后端都能做好这种小儿科……
|
17
zktz 2017-05-09 09:43:03 +08:00
拿 php 自己做一个,很快。
|
18
flowfire 2017-05-09 09:44:02 +08:00 via Android
搜狐 sendmail
p.s.我也没懂为什么不用心跳包 |
19
flowfire 2017-05-09 09:45:15 +08:00 via Android
sendcloud 刚刚脑抽了
|
20
bomb77 2017-05-09 09:55:21 +08:00
|
21
cy18 2017-05-09 10:00:37 +08:00 via Android
ifttt 啊- -不过不知道企业级之后是不是有数量限制
|
22
ifishman 2017-05-09 10:04:10 +08:00 via Android
楼主需求不是很简单么,按照一楼的思路,如何过滤正常关机的售货机,只需要在售货机开机和关机加入一个注册与注销心跳检测不就行了么
|
23
gemini767 2017-05-09 10:06:34 +08:00
@noah1987 心跳包不是生产出来就通讯,可以当机器开始工作的时候开始通讯,当机器关闭时候结束通讯,中间有断开就挂掉了
|
24
yejinmo 2017-05-09 10:14:16 +08:00
手撸一个 PHP 很快啊
- 找个提供 SMTP 的邮件服务商,这里用的阿里云企业邮箱免费版 - 将 PHPMailer 放置同一目录,https://github.com/PHPMailer/PHPMailer <?php $text = $_REQUEST['text']; $title = $_REQUEST['title']; $addr = $_REQUEST['addr']; date_default_timezone_set('Etc/UTC'); require 'PHPMailer-5.2.23/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->isSMTP(); $mail->SMTPDebug = 0; $mail->Debugoutput = 'html'; //随便找个 SMTP 邮件服务商 $mail->Host = "smtp.mxhichina.com"; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->SMTPAuth = true; $mail->Username = "[email protected]"; $mail->Password = "password"; $mail->setFrom('[email protected]', 'account'); $mail->addReplyTo('[email protected]', 'account'); $mail->addAddress($addr, $addr); $mail->Subject = $title; $mail->Body = $text; if (!$mail->send()) { echo "邮件发送失败: " . $mail->ErrorInfo; } else { echo "邮件发送成功。"; } ?> |
25
fuxkcsdn 2017-05-09 10:43:00 +08:00 via iPhone
|
33
Sukizen 2017-05-09 13:24:38 +08:00
我的项目需要定制自动售货机,楼主能提供点信息吗。
|
34
taurenshaman 2017-05-09 13:58:59 +08:00
现在的云计算都提供 Serverless 特性啊,参考:
AWS 的 Lambda Azure 的 Function Google Cloud 的 Function |
35
taurenshaman 2017-05-09 14:00:05 +08:00
你要的功能就是一个 HttpTrigger~
|
36
cevincheung 2017-05-09 14:28:11 +08:00
@noah1987 #3 连接后断开再触发呗,这是自己实现的逻辑问题了。
|
38
jsq2627 2017-05-09 22:15:49 +08:00 via iPhone
楼主要是自己搞不定,花点钱找人做嘛。这是很简单的一个东西。
|