仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1811|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP中基于Linux的搜刮引擎完成

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-3 23:56:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。搜刮引擎     搜刮引擎是为用户供应疾速获得网页信息的东西,其次要的功效是体系经由过程用户输出关头字,检索后端网页数据库,将相干网页的链接和摘要信息反应给用户。从搜刮的局限上普通分为站内网页搜刮和全局网页搜刮。跟着网页数目的急剧增添,搜刮引擎已成为上彀查询信息的必需手腕,各个大型网站均已供应网页数据搜刮办事,而且呈现了很多为大型网站供应专业搜刮引擎办事的公司,如为Yahoo供应搜刮办事的Google,为新浪网和263等国际网站供应办事的百度公司等。专业的搜刮办事费用高而收费的搜刮引擎软件根基都是基于英文的检索,所以都不太合适Intranet情况(如校园网等)的需求。
  搜刮引擎的根基构成普通分为网页搜集法式、网页后端数据组织存储、网页数据检索三局部。决意搜刮引擎利害的关头要素是数据查询的呼应工夫,即若何组织好知足全文检索需求的大批网页数据。
  GNU/Linux作为一个优异的收集操作体系,其刊行版本中集成了大批的收集使用软件,如 Web办事器(Apache + PHP)、目次办事器(OpenLDAP)、剧本言语(Perl)、网页搜集法式(Wget)等。所以,经由过程将它们集中停止使用,即可以完成一个复杂、高效的搜刮引擎办事器。
  1、根基构成和利用办法
  1、网页数据搜集
  Wget法式是一个优异的网页搜集法式,它采取多线程设计可以便利地将网站内容镜像到当地目次中,而且可以天真定制搜集网页的类型、递归搜集条理、目次限额、搜集工夫等。经由过程公用的搜集法式完成网页的搜集任务,既下降了设计的难度又进步了体系的功能。为了减小当地数据的范围,可只搜集可以查询的html文件、txt文件、剧本法式asp和php只利用缺省的了局,而不搜集如图形文件或是其他的数据文件。
  2、网页数据过滤
  因为html文件中存在大批的标志,如<body><table>等,这些标志数据没有实践的搜刮价值,所以到场数据库前必需对搜集的数据停止过滤。Perl作为普遍利用的剧本言语,具有十分壮大而丰厚的法式库,可以便利地完成网页的过滤。经由过程利用HTML-Parser库可以便利地提掏出网页中包括的文字数据、题目数据、链接数据等。该法式库可以在www.cpan.net中下载,而且该网站搜集的Perl法式触及局限之广,远远超越咱们的景象。
  3、目次办事
  目次办事是针对大批数据检索需求开辟的办事,最早呈现在X.500协定集中,后来扩大到TCP/IP中开展成为LDAP(Lightweight Directory Acess Protocol)协定,其相干的尺度为1995年制订的RFC1777和1997年制订的RFC2251等。LDAP协定已作为工业尺度被Sun、Lotus、微软等公司普遍使用到其相干产物中,然而公用的基于Windows平台的目次办事器却较少见,OpenLDAP是收费的运转于Unix体系的目次办事器,其产物的功能优异,已被很多的Linux刊行版本搜集(Redhat、Mandrake等),而且供应了包含C、Perl、PHP等的开辟接口。
  利用目次办事手艺取代通俗的关系数据库作为网页数据的后端存取平台次要基于目次办事的手艺优势。目次办事简化了数据处置类型,去失落了通用关系数据库的费时的事务机制,而是采取全局交换的战略对数据停止更新,其使用的重点是大批数据的检索办事(普通数据更新和检索的频率比例请求在1:10以上),强调检索速度和全文查询,供应完全的数据备份,十分合适搜刮引擎之类办事的需求。从目次办事手艺处理成绩的重点不好看出其在数据检索上的优势,它的提出工夫远远掉队于关系数据库的提出工夫,实践上反应了依据详细成绩优化数据处理计划的准绳。这与今朝普遍存在的但凡触及大批数据处置必选SQL Server的处置办法构成光鲜对照。
  经由过程选用成熟的目次办事手艺进步网页查询的效力,可以简约无效地进步数据处置才能。这也充实显示了GNU/Linux体系运转开放软件的优势,究竟不克不及便利地取得运转于其他平台的目次办事器。
  4、查询法式设计
  搜刮引擎的前端界面是网页,用户经由过程在特定的网页中输出关头字提交给Web办事器停止处置。运转在Apache Web办事器上的PHP剧本经由过程运转其相干ldap函数即可以履行关头字的查询任务。次要停止的任务是依据关头字机关查询、向目次办事器提交查询、显示查询了局等。Linux + Apache + PHP作为普遍利用Web办事器,与WinNT + IIS + ASP比拟其功能绝不减色,在今朝的Linux刊行版本中都集成了Apache + PHP 和缺省的ldap、pgsql、imap等模块。
  5、企图义务
  搜刮引擎的网页数据搜集、数据过滤、到场目次数据库等任务都应当是主动完成的,在UNIX体系中有cron历程来专门完成依照特准时间调剂义务,为了不影响体系的运转,普通可以把这些任务布置到深夜停止。
  2、详细步调和注重事项
  1、设置装备摆设Wget软件
  在RedHat 6.2刊行版中已集成了该软件包,可以直接停止装置。将需求镜像的站点地址编纂为一个文件中,经由过程 -I 参数读入该文件;为镜像的站点指定一个当地下载目次;为了不外部网中链接的反复援用,普通只镜像该站点内的数据;还可以依据网站的详细情形,指定其镜像的深度。
  2、设置装备摆设Openldap办事
  在RedHat 6.2刊行版中已集成了Openldap-1.2.9,其设置装备摆设文件寄存在/etc/openldap的目次中。次要的设置装备摆设文件是slapd.conf,关头要翻开对检索速度相当主要的index选项,可使用setup东西,将ldap在体系引诱后作为缺省办事启动。
  Ldap办事可以经由过程文本文件体例寄存数据,即LDIF文件格局。利用此体例可以高效地更新目次办事数据,需求注重LDIF格局是经由过程空行对数据停止分隔的,而且经由过程运转ldif2lbm将LDIF格局数据导入目次数据库中时需求暂停目次办事。
  3、编制数据过滤和LDIF文件生成剧本
  为了便利地过滤网页数据,可以挪用Perl的HTML-Parser库函数,该法式包下载后需求停止编译,在eg目次下生成了相干的htext,htitle法式,在Perl中可以经由过程挪用内部法式的体例运转该法式,并对其过滤了局经由过程重定向的办法生成一时文件。本搜刮引擎设计的目次数据属性有dn 、link、title、modifydate、contents,个中的dn经由过程Link停止独一性标识,将过滤后的网页文本内容经由过程/usr/sbin/ldif法式停止主动编码后放入LDIF文件中。
  根基的LDIF文件格局以下:
dn: dc=27jd,dc=zzb
objectclass: top
objectclass: organization

dn: link= http://freemail.27jd.zzh/index.html, dc=27jd ,dc=zzb
link: http://freemail.27jd.zzh/index.html
title: Webmail主页
modifydate: 2001年2月8日
contents::
CgpXZWJtYWls1vfSswoKCgoKIKHvoaG7ttOtyrnTw1dlYm1haWzPtc2zoaGh7yDO0t
KqyerH69PKz+QhISFPdXRsb29rxeTWw6O6U01UUDogZnJlZW1haWwuMjdqZC56emJQ
T1AzOiBmcm
VlbWFpbC4yN2pkLnp6YkROUyA6IDExLjk5LjY0Ljiy4srU08O7p6O6bWFpbGd1ZXN00
8O7p7/awe
6jum1haWxndWVzdNLR16Ky4dPDu6cg08O7p8P7OkAgZnJlZW1haWwuMjdqZC56emK/
2sHuOqChoa
AgIKHyzOG5qbf+zvEgofKzo7z7zsrM4iCh8s2o0bbCvKHyICCh8sq1z9bUrcDtIKHywfTR1
LK+of
IgofK8vMr1sr/W99Kzsb7Ptc2z08nK1NHpvLzK9bK/zfjC59bQ0MS9qMGius3OrLukCgoK
CqAKCg
o=
objectclass:webpage

根基的slapd.conf文件以下:
defaultaccess read
include /etc/openldap/slapd.at.conf
#include /etc/openldap/slapd.oc.conf
schemacheck off
sizelimit 20000
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
#######################################################################
# ldbm database definitions
#######################################################################
database ldbm
dbcachesize 1000000
index contents,title
suffix "dc=27jd, dc=zzb"
directory /usr/tmp
rootdn "cn=root,dc=27jd, dc=zzb"
rootpw secret
  经由过程对一个4万个网页(约300M摆布)的当地html文件目次停止过滤后生成的LDIF文件约180M摆布,假如只取文字数据的前400个字符作为网页内容,则生成文件约35M摆布。
  4、设置装备摆设PHP+LDAP办事
  在Redhat6.2中已集成了PHP3和php-ldap模块,选择完整装置时便已装置到/usr/lib/apache目次中,注重反省/etc/httpd/php3.ini中的静态扩大(Dynamic Extensions)中的extension=ldap.so是不是被选择。PHP3中供应了丰厚的LDAP存取函数,可以便利完成对目次数据的搜刮功效。有关Apach + PHP编程方面的材料较多,在此不在赘述。注重在PHP3中的LDAP搜刮函数ldap_search不克不及处置其前往了局超越目次办事设定的最大检索数据,所以可以依据详细情形,在slapd的设置装备摆设文件中设定较大的检索数据限制(sizelimit),此成绩在PHP4中已处理。
  5、义务调剂
  在Redhat6.2中已集成了crond而且缺省装置后便已启动。其相干设置装备摆设文件有/etc/crontab、/etc/cron.daily、/etc/cron.hourly、/etc/weekly、/etc/monthly,你只需求依据数据的更新频度,将网页搜集、网页过滤、生成LDIF文件、中断目次办事、更新目次数据、从头启动目次办事,作为一个复杂的Shell法式放入到响应的目次中便可。
  3、后果与思虑
  以上复杂的引见了咱们的搜刮引擎的完成办法和注重事项,这仅仅是咱们在对GNU/Linux懂得得十分浅薄的情形下设计的以目次办事为中心的知足外部网需求的搜刮引擎体系,其实不能代表GNU/Linux和它集成的大批软件的真正实力。
 经由过程在一台装置RedHat Linux 6.2 的Sparc Ultra 250上实践测试,对具有4万个网页的目次数据停止搜刮时,基于上述办法设计的搜刮引擎呼应速度普通在3秒摆布,目次数据完整更新大约需求4小时摆布,可以知足外部网的需求。实践上,限制搜刮呼应速度的关头是PHP3的ldap_search函数没有供应数据限制的功效,招致在查询了局集过大时体系呼应速度变慢,由于每次用户可以阅读的查询了局实践长短常少的,而办事器端每次的查询老是前往全体了局,在PHP4中的ldap_search经由过程指定sizelimit参数,可以无效处理该成绩。
  目次办事的使用局限十分普遍,实践上作为大型的信息站点为了进步客户会见效力,都或多或少采取了目次办事的手艺。目次办事依据详细的使用需求的优化设计办法,对咱们决意使用体系的开辟无疑是一个启示,应当说在基于索引信息的范畴LDAP办事远远优于传统的关系数据库体系。
  基于GNU/Linux停止收集办事器法式设计,可以充实体味到开放源代码的魅力和实力,它既可以简化体系的设计,又大大地进步了任务效力,同时也无效下降了体系的本钱。法式设计由一切从零入手下手的庞杂繁琐的反复休息,简化为成绩笼统、功效分化、查找资本、组合体系四个局部,加倍强调对体系的熟悉、坦荡的视野和进修的才能,同时开放源代码也为体系进一步优化供应了坚实的基本
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?
蒙在股里 该用户已被删除
沙发
发表于 2015-2-4 07:09:06 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
飘灵儿 该用户已被删除
板凳
发表于 2015-2-9 18:33:39 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
再见西城 该用户已被删除
地板
发表于 2015-2-27 15:57:56 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
不帅 该用户已被删除
5#
发表于 2015-3-9 09:29:48 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
6#
 楼主| 发表于 2015-3-16 21:06:38 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
简单生活 该用户已被删除
7#
发表于 2015-3-23 01:02:42 | 只看该作者
做为1门年轻的语言,php一直很努力。
变相怪杰 该用户已被删除
8#
发表于 2015-3-27 20:24:20 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
谁可相欹 该用户已被删除
9#
发表于 2015-3-27 22:09:48 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-4-3 04:42:15 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
山那边是海 该用户已被删除
11#
发表于 2015-4-6 11:31:48 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
飘飘悠悠 该用户已被删除
12#
发表于 2015-4-10 18:52:43 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
分手快乐 该用户已被删除
13#
发表于 2015-4-27 00:28:21 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
再现理想 该用户已被删除
14#
发表于 2015-6-4 11:50:20 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
若相依 该用户已被删除
15#
发表于 2015-6-18 18:24:45 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
爱飞 该用户已被删除
16#
发表于 2015-6-25 10:08:57 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
活着的死人 该用户已被删除
17#
发表于 2015-6-26 20:30:40 | 只看该作者
当然这种网站的会员费就几十块钱。
透明 该用户已被删除
18#
发表于 2015-6-30 14:53:00 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
柔情似水 该用户已被删除
19#
发表于 2015-7-11 23:51:04 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
冷月葬花魂 该用户已被删除
20#
发表于 2015-7-14 13:49:05 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-12 11:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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