1、企业通用门户网站建设技能训练手册企业通用门户网站建设技能训练手册信息工程系目 录一、课程简介 3二、技能训练 52.1秦皇岛职业技术学院留学网设计与开发 5三、学期项目训练反馈 24一、课程简介 企业通用门户网站建设 课程简介 企业通用门户网站建设的前身是php+mysql,原是我系计算机应用技术专业软件设计方向大二后半学期开设的一门专业核心课,主要培养学生利用php技术进行网站开发的能力。在此学习前,学生已有一定的计算机基本知识和基本操作技能,具有了一定网站美工界面设计能力和数据库操作能力。但是原有课程包含内容单一,仅靠php技术无法完成一个完整的企业门户门户网站;另外学生的各知识综合能力较
2、差(不能把以前所学到的知识如dreamweaver、css、html等知识进行综合应用),且高职学生自学能力较差。 课程的总体目标:本课程为计算机应用技术专业学生从事动态网站开发、软件设计等相关职业领域和职业岗位(群)打下奠定必要的理论基础,以“项目+开发小组”(引入企业真实项目,根据企业对门户网站的实际需求,将每个班级分成若干开发小组,把项目下发到小组中)的方式方法,将相关知识点穿插到项目中的任务,通过学习和完成具体的任务,培养学生的基本素质和实践动手能力,为进入职场作好切实的准备。 课程的能力目标:通过完成秦皇岛职业技术学院留学网建设项目,学生能运用各种计算机相关技术独立设计、开发商业网站
3、、企业门户网站,能够后运用设计模式的理念完成高质量的网站开发;并且能够胜任企、事业单位的网页设计、网页制作、网站开发等相关工作岗位,并形成良好的职业态度。 课程的知识目标: (1)掌握php+mysql开发网站的基本流程。 (2)理解网站前台与后台之间的关系。 (3)掌握mysql数据库的使用方法。 (4)掌握php基本语法及命令。 (5)掌握网站开发环境的搭建。 (6)掌握站点管理(建站、维护、发布等)的基本方法。 (7)掌握网站中增、删、查、改的设计方法。 课程的素质目标: (1)在项目中,培养他们与人沟通的能力,团队合作精神和严谨认真的工作态度。 (2)在任务中,培养学生分析、解决实际问
4、题的能力。 (3)在情境中,培养学生遵守企业信息安全的意识,面对繁杂重复劳动不焦躁。 (4)培养学生的创新意识。二、技能训练2.1秦皇岛职业技术学院留学网设计与开发1、项目描述 本项目源于秦皇岛职业技术学院门户网站,并经过简化修改后形成。项目既包含的学院的真实内容,又符合本校本专业学生的实际情况。对课程中项目的研究已经成熟。本课程中的项目按照项目化教学改革的进程,已在本专业学生中进行了试点,效果良好。2、项目训练目的(知识、能力、素质) 通过项目训练可以是学生掌握制作门户网站的技能,培养学生的程序员思想,达到锻炼编程技能的目的。3、项目训练步骤(学生填写附表1) (1)需求分析 (2)环境搭建
5、 (3)系统设计 (4)系统实施 (5)系统调试 (6)系统改进4、技术难点及重点 (1)技术难点:不同浏览器的兼容性问题。 (2)技术重点:数据库的连接于新闻发布功能。5、项目所需知识 (1)网页制作的知识 (2)PHP技术6、项目扩展 练习了这个项目,可以拓展类似企业门户网站的项目。7、项目总结(学生填写附表2)附表1步骤一需求分析设计静态网页撰写需求文档步骤二环境搭建安装运行环境安装数据库测试代码步骤三系统设计(包含数据库设计)1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql SHOW DATABASES;2、创建一个数据库abccs mysql CREATE DATA
6、BASE abccs; 注意不同操作系统对大小写的敏感。 3、选择你所创建的数据库 mysql USE abccs Database changed 此时你已经进入你刚才所建立的数据库abccs. 4、创建一个数据库表 首先看现在你的数据库中存在什么表: mysql SHOW TABLES; Empty set (0.00 sec) 说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable: 我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。 mysql CREATE TABLE mytable (name VARCHAR(20), sex C
7、HAR(1), - birth DATE, birthaddr VARCHAR(20); Query OK, 0 rows affected (0.00 sec) 由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。);性别只需一个字符就可以表示:m或f,因此选用CHAR(1);birth列则使用DATE数据类型。 创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表: mysql SHOW TABLES; +-+ | Table
8、s in menagerie | +-+ | mytables | +-+ 5、显示表的结构: mysql DESCRIBE mytable; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | deathaddr | varchar(20) | YES | | NULL |
9、| +-+-+-+-+-+-+ 4 rows in set (0.00 sec) 6、 往表中加入记录 我们先用SELECT命令来查看表中的数据: mysql select * from mytable; Empty set (0.00 sec)这说明刚才创建的表还没有记录。 加入一条新记录: mysql insert into mytable - values (abccs,f,1977-07-07,china); Query OK, 1 row affected (0.05 sec) 再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将所有员工的记录加入到表中。 7、
10、用文本方式将数据装入一个数据库表 如果一条一条地输入,很麻烦。我们可以用文本文件的方式将所有记录加入你的数据库表中。创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出,例如: abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa 使用下面命令将文本文件“mytable.txt”装载到mytable表中:mysql LOAD DATA LOCAL INFILE mytable.txt INTO TABLE pet; 再使用如下
11、命令看看是否已将数据输入到数据库表中:mysql select * from mytable;步骤四系统实施1、能运行现有网站项目2、设计网站新版本,整理需求3、设计网站原型4、根据需求修改网站界面5、设计数据库结构6、建立数据库7、连接数据库并进行联通测试8、查看已有代码研究代码结构9、阶段测试,代码掌握情况。10、划分功能模块,组建工作小组。11、搭建源代码管理服务器,组内分工。12、开发用户权限管理功能13、开发用户权限管理功能14、开发新闻管理功能15、开发新闻管理功能16、页面集成文本编辑控件17、页面集成文件上传功能18、开发在线支付功能19、开发在线支付功能20、使用框架技术实现
12、页面优化21、使用框架技术实现页面优化22、解决系统调用安全问题23、实现代码与显示页面分离24、优化代码结构25、代码重构实现对多种数据库的支持26、SEO优化处理27、解决不同浏览器显示兼容问题28、解决不同浏览器显示兼容问题步骤五系统调试一、include_path问题一般可以看到很多这类信息:stat64(/error/dir/test.php, 0xbfab4b9c) = -1 ENOENT (No such file or directory)解决方法:1.在应用php里面设置include_path,去掉.等相对路径,将其中包含使用文件比较多的目录放到前面。保证遍历include
13、_path的时候能够很快找到。2.使用绝对路径进行include,require,include_once,require_once3.使用php的自动加载机制二、apache的rewrite配置RewriteEngine OnRewriteCond %DOCUMENT_ROOT%REQUEST_FILENAME !-fRewriteCond %DOCUMENT_ROOT%REQUEST_FILENAME !-dRewriteRule .* %DOCUMENT_ROOT%/index.php #RewriteRule .* /index.php 这里最后一个注释掉的rewrite配置不好,因为
14、它每次请求都会多一次syscallstat64(/index.php, 0xbfab4b9c) = -1 ENOENT (No such file or directory) 三、apache日志问题我们在测试一个问题的时候,发现如果自定义日志里面记录了访问时间等信息,会多出很多stat64(/etc/localtime, st_mode=S_IFREG|0644, st_size=165, .) = 0 如果记录的日志比较多,性能下降非常严重,对于简单应用,记录复杂日志,性能会下降30倍。解决方法:在多个apache前端架http层的proxy,如haproxy,nginx。在这些地方记录日
15、志。接入层负载一般不高,所以proxy可以做一些记录日志的工作。在这种配置下,可以关闭apache的日志。四、realpath()问题大家可以看一下www.ks-这篇文章:lstat64调用多了之后,主机CPU和IO都会比较高。究其原因,因为php5.2.x对realpath()的实现不够好,导致会针对目录层次,逐级调用lstat64()。为了解决这个问题,它使用了realpath_cache,针对某个文件,存储其realpath。这里只存储了叶子节点的realpath,而对 路径上的内容没有存储,所以在做/a/b/c/d/e/f/g/a.phprealpath检查的时候逐级调用lstat64
16、,而在做/a/b/c /d/e/f/g/b.php检查的时候,还要对/a/b/c/d/e/f/g/做逐级检查。所以有些优化建议就是“减少目录层次,甚至放到/根目录下”。当然我不推荐这么干。从5.3.0开始,php对realpath()做了高效的实现,路realpath的中间路径也做了缓存,以上面的情www.ks-况为例,检查/a/b/c/d/e/f/g/b.php的时候就只会做“b.php”的检查了。所以,升级到php5.3.0以上版本能够很好地解决这个问题。解决方法:1. 尽量少用include_once和require_once因为这两个函数会做realpath检查,防止有符号链接的情况导
17、致重复加载。不用它们就能减少realpath的调用。2. 合理设定php.ini中的realpath_cache_size和realpath_cache_ttl参数既然使用了realpath_cache,那肯定有大小限制。对于使用了很多文件,比如用了Zend Framework的项目,可能默认realpath_cache_size=16k就太小了,需要增大这个设置,推荐设置为256K以上。另外默认realpath_cache_ttl=120,2分钟就过时了,怎么也要设定为3600(1小时)。这里需要注意的是,这个realpath_cache是每隔apache进程独占的,所以很吃内存的,不能设置
18、的太大。3. 升级到php5.3.x没什么好说的,如果应用经过详细测试没有问题,那么推荐升级到高版本。 五、APC的使用apc能够缓存php的opcode码,能普遍提升30%的性能。但是默认apc.stat=1,这样每次请求都会访问需要使用的php文件,看看这个文件是否更新了,已决定是否重新编译php文件。这个是很耗性能的,推荐关掉。解决方法:1. 设定apc.stat=0,不必每次请求都访问需要用到的php文件。需要注意的是:每次发版本改动了php文件的时候,必须调用apc_clear()清除apc缓存,否则你的代码永远也不会生效。六、smarty调优对于模块化比较好,而且应用比较多的网站,
19、如果使用了smarty模板系统,这个时候就需要对smarty进行调优了,否则smarty部分的开销就很可观。之前根据一个经验来看,smarty可以占到10%左右的开销。默认配置下,smarty对检测每个模板文件是否有更新,决定是否重新编译模板文件。如果模板文件比较多,则会多出很多stat系统调用,加上context switch,开销会不小。解决方法:1. $smarty-compile_check = false;去掉每次的检测,但是这样之后,每次发版本都要把compile_dir目录的已编译模板删除,否则你的模板文件永远也不会生效了。2. 如果可能,可以使用cache功能。步骤六系统改进1
20、.div的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行。2. margin加倍的问题设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline; 例如: 相应的css为 #IamFloat float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/3.浮动ie产生的双倍距离#box float:le
21、ft; width:100px; margin:0 0 0 100px; /这种情况之下IE会产生200px的距离 display:inline; /使浮动忽略 这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); #box display:block; /可以为内嵌元素模拟为块元素 display:inline; /实现同一行排列的效果 diplay:table; 4.IE与宽度和高度的问题IE 不认得min-这个定义,但实际上它把正常的wid
22、th和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。 比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样: #box width: 80px; height: 35px;htmlbody #box width: auto; height: auto; min-width: 80px; min-height: 35px; 5.页面的最小宽度min -width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证
23、排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个 放到 标签下,然后为div指定一个类, 然后CSS这样设计:#container min-width: 600px; width:e-xpression(document.body.clientWidth 600? 600px: auto ); 第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。 6.DIV浮动IE文本产生3象素的bug左边对象浮
24、动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距. #box float:left; width:800px; #left float:left; width:50%; #right width:50%; *html #left margin-right:-3px; /这句是关键 7.IE捉迷藏的问题当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。 有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。 解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。附表2:项目总结本课程引入真实项目,模拟真实工作情境,由情境引出任务,在完成任务中拥有能力、掌握知识。在课堂中引进企业的管理规范、开发流程,将教学实践、工作体验、产品开发有效的结合起来。项目选取为网站首页设计等分为28个子情景。通过整个项目的制作,使学生能够了解开发网站自设计至测试的整个流程,并能实际编写代码实现功能。三、学期项目训练反馈1、技能掌握(1)掌握了建立网站的技能(2)掌握了设计网站数据库的技能2、未掌握技能(1)不能完全掌握浏览器兼容的解决方式3、希望改进(1)在课堂中更多的加入来自于其他方面的优秀资源。4、其他
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1