全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4858|回复: 14

[疑问] SAE监控BuyVM到货email通知(官方API+抓页面)【附源码】

[复制链接]
发表于 2012-3-18 11:56:57 | 显示全部楼层 |阅读模式
本帖最后由 neverno 于 2012-3-18 11:56 编辑

没啥技术含量的蛋疼东西。

buyvm要放货了,tw上@他问了下,15刀、25刀年付都有货。具体北京时间什么时候?看最后演示的页面有倒计时。

用的是他家官方json API,不是之前这里的直接抓取页面判断,邮件需要SMTP。最后也附上用直接抓取页面判断的方法,修改一下,能用于监控其它的到货通知,不仅是buyvm

SAE专属:http://sae.sina.com.cn
===============================
核心代码(自行修改)
http://pastie.org/3616065


  1. <?php
  2.         ////以 下 需 要 修 改////
  3.         $mailsmtp = '';        //smtp地址
  4.         $mailsmtpport = 25;                //端口
  5.         $mailfrom = '';                //源邮箱
  6.         $mailpassword = '';        //密码
  7.         $mailto = '';        //目的邮箱 以,号分隔 如'123@123.com,123@123.com'
  8.         $mailtocc = '';                        //抄送邮箱 以,号分隔 如'123@123.com,123@123.com'
  9.         $pid = '67,46,47,48,51,86,88,89,90,91,94,95,96';        //编号(具体看下面) 以,号分隔
  10. //        67=OpenVZ-128MB 46=OpenVZ-256MB 47=OpenVZ-512MB 48=OpenVZ-1024MB 51=OpenVZ-2048MB
  11. //        86=KVM-128MB 88=KVM-256MB 89=KVM-512MB 90=KVM-1024MB 91=KVM-2048MB
  12. //        94=Storage-250GB 95=Storage-500GB 96=Storage-1000GB
  13.         ////需 要 修 改 结 束////

  14.         $f = new SaeFetchurl();
  15.         $json = $f->fetch('http://www.doesbuyvmhavestock.com/automation.json');
  16.         $f->clean();
  17.         $json = json_decode($json);
  18.         $pid = explode(',',$pid);
  19.         for($i = 0 ; $i < count($pid) ; $i++){
  20.                 checkstock($pid[$i]);
  21.         }
  22.        
  23.         function sendm($mailtitle,$mailcontent) {
  24.                 global $mailsmtp,$mailsmtpport,$mailfrom,$mailpassword,$mailto,$mailtocc;
  25.                 $mail = new SaeMail();
  26.                 $mail->setOpt(array( 'from' => $mailfrom ));
  27.                 $mail->setOpt(array( 'to' => $mailto ));
  28.                 $mail->setOpt(array( 'cc' => $mailtocc ));
  29.                 $mail->setOpt(array( 'smtp_host' => $mailsmtp ));
  30.                 $mail->setOpt(array( 'smtp_port' => $mailsmtpport ));
  31.                 $mail->setOpt(array( 'smtp_username' => $mailfrom ));
  32.                 $mail->setOpt(array( 'smtp_password' => $mailpassword ));
  33.                 $mail->setOpt(array( 'subject' => $mailtitle ));
  34.                 $mail->setOpt(array( 'content' => $mailcontent ));
  35.                 $mail->send();
  36.                 if ( $mail->errno() != 0 ) {
  37.                         $mail->setOpt(array( 'subject' => 'error:'.$mail->errmsg() ));
  38.                         $mail->setOpt(array( 'content' => 'code:'.$mail->errno().'<br>'.$mail->errmsg() ));
  39.                         $mail->send();
  40.                 }
  41.         }
  42.        
  43.         function checkstock($id) {
  44.                 global $json;
  45.                 for($i = 0 ; $i < count($json) ; $i++){
  46.                         if($json[$i]->pid == $id && $json[$i]->qty != 0){
  47.                                 sendm('BuyVM '.$json[$i]->name.' 有货啦!','还有 '.$json[$i]->qty.' 个,赶紧去抢吧,地址:https://my.frantech.ca/cart.php?a=add&pid='.$json[$i]->pid);
  48.                                 break;
  49.                         }
  50.                 }
  51.         }
  52.        
  53. ?>
复制代码
保存为任意PHP

添加sae计划任务:
config.yaml(自行修改,默认间隔2分钟)

  1. name: {项目名}
  2. version: {版本号}
  3. cron:
  4.     - description: {描述}
  5.       url: {文件路径,如index.php}
  6.       schedule: every 2 mins, offset 5
  7.       timezone: Beijing
复制代码
演示
http://shifouyouhuo.sinaapp.com/

===================================
抓取页面的方法可用于BuyVM以外的监控
  1. <?php
  2.         $addr = 'https://my.frantech.ca/cart.php?a=add&pid=67';                //order直接网址
  3.         $mailt = 'BuyVM 15美元/年 有货!';       //邮件标题
  4.         $mailc = '有货!';        //邮件内容
  5.         $f = new SaeFetchurl();
  6.         $content = $f->fetch($addr);
  7.         if ($f->httpCode() == 200) {
  8.                 if (!strpos($content,'Out of Stock')) sendm($mailt,$mailc);
  9.         }
  10.         if ($f->errno() != 0)  echo $f->errmsg();
  11.         $f->clean();
  12. ?>
复制代码

评分

参与人数 2威望 +25 收起 理由
Comcast + 15 很给力!
shineme + 10 神马都是浮云

查看全部评分

发表于 2012-3-18 11:57:07 | 显示全部楼层
真蛋疼
发表于 2012-3-18 11:59:08 | 显示全部楼层
这个……
发表于 2012-3-18 11:59:20 | 显示全部楼层
这就是文艺青年和其余两种青年的明显区别了
发表于 2012-3-18 12:13:49 | 显示全部楼层
真心学习了
发表于 2012-3-18 12:18:14 | 显示全部楼层
   真心收藏了。
发表于 2012-3-18 12:20:18 | 显示全部楼层
上传代码后访问空白
发表于 2012-3-18 12:25:22 | 显示全部楼层
留个记号备用
发表于 2012-3-18 12:39:22 | 显示全部楼层
牛人!留个记号备用
发表于 2012-3-18 12:41:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-7 21:55 , Processed in 0.069695 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表