【应用】制作收集其他网站VPS价格列表以及stock状态查询页面
原文来自hostloc的nswdhy,思路很好,记之!
技术:php curl函数
原理:根据访问页面的http状态码进行相关判断
whmcs的order页的url形式一般都是http://xxxx.xxx.xx/cart.php?a=add&pid=n
可以购买的情况下,一般都会有302跳转,out of stock则返回200不跳转
有了这个就好办了,大神们基本可以根据这个思路去做更高级的事情了
代码:
function get_info($url,$options = array()){
$options[CURLOPT_RETURNTRANSFER] = true;
$options[CURLOPT_NOBODY] = true;
$options[CURLOPT_SSL_VERIFYPEER] = false;
$options[CURLOPT_SSL_VERIFYHOST] = true;
$options[CURLOPT_TIMEOUT] = 10;
$ch = curl_init($url);
curl_setopt_array($ch,$options);
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
return $info['http_code'];
}
这个函数返回所查询的url的http状态码:200、301、302、404等等
要查询单个url,直接使用get_info('http://xxx.xxx.xxx')
批量查询,可以用一个数组
$urllist = array(
"http://xxxx.xxx1.xx",
"http://xxxx.xxx2.xx",
"http://xxxx.xxx3.xx"
)
然后操作这个数组即可
get_info($urllist[0]);
get_info($urllist[1]);
get_info($urllist[2]);
核心代码就这么多,下面是一般的判断,可以这样写:
if(get_info($urllist[0]) == 200){echo "<em>Out of stock</em>";}else{echo "<a href='".$urllist[0]."' target='_blank' rel='nofollow'>Order Now</a>";}
这是比较偷懒的做法,只考虑了200状态,其他404、500等都没有考虑,可以进一步优化代码。
查询的部分就这么多,可以做一些简单的查询,大神可以进一步优化代码,做异步。
前端:
要查的链接不多的话,就直接写在html代码里。也可以写个输入程序调用。我的那个用的wordpress添加的数据,这样一来,可以进一步加主机商的介绍、评测等等。
样式:
表格排序用的tablesorter插件,请自行百度。
自动查询:
在前端服务器上设置个定时任务
*/15 * * * * cd /前端目录&&wget -N http://后端url
这个*/15表示的是每15分钟wget一次,定时任务请自行百度crontab