设为首页 收藏本站
查看: 726|回复: 0

[经验分享] php+ruby(with ActiveRecord)又一新範例 -- RSS聯撥器

[复制链接]

尚未签到

发表于 2017-4-11 08:31:00 | 显示全部楼层 |阅读模式
本文同步發佈至:
http://blog.pixnet.net/zusocfc/post/4563945
http://zusocfc.blogspot.com/2007/05/phprubywith-activerecord-rss.html
上個例子,我們用PHP + Ruby 搭配ActiveRecord的方式來寫資料新增的程式
今天我們就來延伸應用一下,要做什麼呢? RSS聯撥器!
有鑒於GoogleReader的RSS聯撥器產生出來的東西太醜(只能修改一兩個小地方.. 我總覺得那好胖=  =),乾脆自己寫個來用
Demo網址改天再PO上來,我們先來寫程式比較重要:P
主機請記得先裝好Ruby、PHP、Apache跟MySQL;OS要啥都沒差,我比較建議LAMP的配置XD
我們來建立一個叫做feeds的目錄包含一個子目錄,叫做lib:
引用
mkdir -p feeds/lib


先跳到feeds/lib新增幾個會被require的檔案:
引用

cd feeds/lib
touch connect.rb model.rb require.rb



以下是各個檔案的用處:
引用
    - connect.rb
      資料庫連線初始化
    - model.rb
      資料表模型宣告
    - rqeuire.rb
      會用到的額外library引入


原始碼:
- connect.rb
#!/usr/bin/env ruby;require 'lib/require';ActiveRecord::Base.establish_connection({:adapter => "mysql",:host => "localhost",:username => "username",:password => "password",:database => "others"})
- model.rb
#!/usr/bin/env ruby;require 'lib/connect';class Feed < ActiveRecord::Base;end
- require.rb
#!/usr/bin/env ruby;%w|rubygems active_record hpricot open-uri|.each{|lib| require lib}


一切搞定後,我們可以開始來建立資料庫了!
引用
      mysql> create database others;
      mysql> use others;
      mysql> create table feeds(id int, uri varchar(255));
      mysql> describe feeds;


看看資料表結構是否正確!
接著回到上一層目錄,新增底下的幾個檔案:
引用

      touch index.php list.rb new.htm new_record.rb save.php

    - index.php
      網站首頁,會列出目前的RSS feed
    - save.php
      儲存RSS feed網址
    - list.rb
      處理RSS feed
    - new_record.rb
      將RSS feed網址存入資料庫(也可以直接用php寫.. 我是沒有意見)
    - new.htm
      新增RSS feed網址的表單


原始碼我就直接貼了
      - index.php
<html>
<head>
<title></title>
</head>
<body>
<a href="new.htm">Create</a>
<ul>
<?php
exec("ruby list.rb", $args);
for($i=0;$i<count($args);$i+=3)
echo "<li><a href=\"" . $args[$i+1] . "\" title=\"作者:" . $args[$i+2] . "\">" . $args[$i] . "</a> -- " . $args[$i+2] . "</li>";
?>
</ul>
</body>
</html>

- save.php
<?php
exec("ruby new_record.rb " . $_POST["feed_uri"], $arg);
if ($arg) echo "<script>location.href=\"index.php\";</script>";
?>

- list.rb
#!/usr/bin/env ruby
=begin
Filename: list.rb
=end
require 'lib/model'
Feed.find(:all).each{|feed|
doc = Hpricot(open(feed.uri))
rss = doc.search("entry")
max = rss.size > 3 ? 3 : rss.size
max.times {|i|
break if rss.nil?
puts rss.search("title").text.gsub(/\n/, " ") # Return the title of the article to the PHP file.
puts rss.search("link[@rel='alternate']")[0]["href"].gsub(/\n/, " ") # Return the link of the article to the PHP file.
puts rss.search("author/name").text.gsub(/\n/, " ") # Return the author of the article to the PHP file.
}
}

- new_record.rb
#!/usr/bin/env ruby
=begin
Filename: new_record.rb
=end
require 'lib/model';puts Feed.new({:uri => ARGV[0]}).save

- new.htm
<html>
<head>
<title></title>
</head>
<body>
<form action="save.php" method="post">
<p>Please input the feed url:<input type="text" name="feed_uri" /></p>
<p><input type="submit" value="Save!" /></p>
</form>
</body>
</html>

OK,這樣就可以啦XD

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-363145-1-1.html 上篇帖子: 在PHP 5.4.10下安装PECL扩展 sphinx-1.1.0时遇到的问题 下篇帖子: PHP经典header错误"Cannot modify header information"的解决方法(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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