Category: php程序设计

搭建视频分享平台

近期教育技术中心比之前更重视网络教学平台了,于是老大就考虑让我们小组搭建“教学视频分享平台”,如果确定要应用这个平台的话,学校约3k左右教师,按保守估计每个教师上一门课程(且先不计算实践课和选修课等),每个课程约32学时,一个学时约50分钟,五十分钟的视频(假设是wmv/avi)约400MB,那每年是 2*3000*1*32*400MB ,大约是73多TB的数据量 至少需要考虑以下方面 1.带宽,视频流的流量比较大,如果同时的访问量大或者用户上传数据量大的话,先不说本服务器的带宽稳定,很可能会影响同内网内的其他服务器的访问速度; 2.便捷,由于视频量大,所以将会考虑由教师作为用户上传视频;为了方便用户访问,需要把教师上传的各种视频格式转换为flv,然后调用abobe flash player播放;为了便于减少教师工作量,转化视频格式将由服务器自动实现,另一方面这就加大服务器的负载 今天下午把大体服务框架搭建起来了,主要采用的技术方案是phpmotion , 简要说要用到 unix/linux server , web server (apache /nginx) ,mysql server , ffmpeg , ffmpeg-php ,lame mp3 encoder ,Libogg + Libvorbis,Mencoder and also Mplayer,cgi-bin , 今天下午搭建的简要笔记: 1.配置基本服务器环境,linux + web server + mysql server + php run envirunment 2.下载好需要的 软件包,参考unfont同学的笔记 3.一个安装,其中ruby 和 mplayer 编译都花了半天 4.安装ffmpeg 和 ffmpeg-php,后者是前者的一个拓展,需要先编译ffmpeg在编译安装ffmpeg-php […]

框架的意义

认同这些观点,文章来自joyqi.com PHP界的开发热潮可以用风起云涌来形容了,最新的WEB动向都可以在这里体会到。在我上大学那会还是流行开发论坛,后来流行开发博客,最近似乎开 始流行框架了。我们亲爱的水水同学也加入到这水生火热的框架开发大军中了,那么我觉 得作为一个PHP开发人员,有必要谈一谈我对框架的看法,希望对这些框架开发者有些启示。 我大二开始接触PHP开发,毕业论文的题目就是 《大型网站框架开发》。当然那个时候对框架的认识还是比较幼稚的,但是在实习公司CTO的指导,和大牛老覃的帮助下,对框架的认识开始逐渐加深。到现在 已经过了“向世界宣布要独自一人开发出最牛逼,最高效的框架”的时期了,当然并不是磨灭了志气,如果说我有这种资源我还是会尽力一试的,这也就是为什么我 一直在推进开源blog项目,因为我们团队 有这个实力,我们肯定会成功。 但是框架开发并不是那么回事了,我自己开发过一个框架,那个框架真的完全是我一个人写,也就是现在 Magike的前身。当时我心中真是把它当成世界上最好的框架了,执行效率尚可,代码布局规范,开发方便。但是在项目中总会遇到种种问题,当时我对自己的 框架开始产生动摇,它毕竟不能解决所有问题,因此我开始在追求全面解决问题的基础上,修改框架,最后搞得身心俱疲,那个项目也以失败告终(当然失败的主要 原因是市场运作,而不是技术上的问题)。我当时在这个公司做毕业设计时,公司的CTO告诉我,你只需要回答我一个问题,框架是什么? 现在回 想起来,当时的回答可真够烂的,具体是甚暂且不表。经过多个项目的磨炼,我也接触了很多框架,对框架的理解也有所加深。我承认我目前对Zend Framework很欣赏,基本上要我开发项目,我的首选就是它了,自己也给它写了一些插件。现在让我用问答的形式展开此文 1.框架要解决 什么问题? 对我来说,框架并不是要给我限制一种开发方式,一种程序结构,它就是帮助我们快速开发的,至于用什么结构,项目多种多样,我们可 以自己选择。Zend Framework可以解决这个问题,他几乎包含了所有的PHP应用以及第三方应用支持,所以我选它。因此我并不要求框架给我提供一种解决方案,我只需要 它能够根据我的需要组合出一个解决方案。Zend Framework是用package方式来组织项目结构,需要什么模块,只需要引用相关package就行了,也不需要关心依赖问题。 在 此我要特别提醒各位框架开发者,目前几乎大多数开源的第三方库都是使用package模式来发布,如果你希望自己的框架能够快速扩展第三方应用,我觉得还 是用这种方式来组织结构比较妥当。 2.中小型框架在乎执行效率,大型框架在乎生产效率。 这是它们所服务的对象不同所造成的, 初学程序的同学会把程序性能看成头等大事,但当你经过了项目的洗礼后你就会发现,对于大型项目来说程序性能已经被放到比较次要的位置了,结构才是王道。现 代计算机系统发展非常迅猛,很多在程序中性能提升的小技巧很快就会被淘汰,特别是像PHP这种脚本语言,最终计算机指令集与其语言解释器本身有很大关系, 与其关心这些技巧,不如把注意力放到程序结构的优化上来。 我举一个很简单的例子,为什么在很多框架中都有数据库抽象层这个概念?如果你不理 解它的意义,你设计出来的抽象层可能没有任何意义。在我看来数据库抽象层有三个意义 减少SQL书写量,从而降低出错几率 通 过提供给开发者统一的接口,让Developer与DBA角色分离,即使数据库被更换,也无需更改程序 缓存考虑 以 上三点,第一点,对于小型框架来说一般开发者比较少,出了错可能也是你自己调试,因此基本这一条可以忽略。第二条也可以忽略,理由同第一条。第三条看上去 比较重要,但是小型项目在数据库这一级用到缓存的机会比较少,也可以忽略。综上所述,小型框架里没有存在数据库抽象层的必要,直接上SQL吧,当然为了少 写些代码,不用每次都要先query再fetch,也为了满足程序员懒得每次都connect数据库的愿望,还是可以简单得封装一下的。但也就是 connect封装到__construct里,query封装到fetch里了事,不用搞得太复杂。 如果你想把数据库层搞得复杂点,可以 达到另一个极致,现在有的数据库层已经可以直接绑定ORM视图,这意味者什么?意味着你在所见即所得设计工具里把数据库ORM关系映射设计出来,丢到 PHP里面就可以直接生成Model了,不用管什么联动操作,因为关系里面都标明了。 可以说这也是一种发展方向,但PHP是一个解决实际问 题的语言,它所有的函数都是为了解决问题才出现的,以前天天有人说PHP不够企业级,语言不规范,不是完全OOP等等。其实他们都没有看到PHP流行的实 质,没有看到PHP草根的原因?这个原因可以用他们的问题来解释,也就是这个世界上非企业级的问题比企业级的问题多得多。PHP只是专注于它自己的问题, 而恰好这个范围又比较大,门槛比较低罢了。 但PHP的学习者也不必担心,自己提高到某个程度后就到顶了,没有这回事,虽然说高处不胜寒,但 也有无限风光在险峰一说。其实PHP是一门对系统工程要求比较高的语言,因为它的开放性,开发者需要不停地与不同的系统打交道,一般做过几年开发的,对服 务器优化,数据库管理都比较精通。 3.不要盲目地选择框架,更不要盲目地开发框架 经常看到有人用”Hello World”程序来对比两个框架的执行效率。这样的对比是没有任何意义的,虽然大家都说没有意义,但是还是有很多人要这样比,因此我也不指望我说的这句没 […]

关于模板引擎

1.可以更好的组织代码和文件夹。 不会因为你新建了一个/inc的文件夹,然后在里面写function.php文件,就能说明你的代码有组织了。但是当你使用一个php框架的时候,框架本身已经有一定的文件夹结构, 你需要遵循框架的一些标准,这样就可以保证你始终用一定的方式来组织你的代码。 不幸的是,一些命名行冠军仍然在使用着vi,这可能是一个挑战。你工作的时候将会遇到很多体积很小的文件,当你使用框架了,你就可以很方便的使用现代化的编辑器或IDE来浏览你的代码结构,这样你就能很快的找到你所需要的文件。 如下图 2.公共代码和类库 Php是一门伟大的web开发语言,它提供了无数的工具和类库。 但是当你试图单独建立一个网站的时候,你要么自己写代码,要么使用第三方的代码。 所有优秀的php框架都会提供一些类库和辅助函数给你,它们能给你提供以下帮助: 表单验证; 输入输出的数据过滤; 数据库抽象; Session和cookie处理; Email、日历和分页等…… 这样的例子不胜枚举。更何况,还有一些社区提供的大量的插件,你可以将它添加到你的框架中。 3,mvc模式 著名的mvc模式要追溯到1979年,是一个叫哈维的挪威计算机科学家首次提出来的。 Php工作起来本身就像是一个模板引擎。但是,如果你很不负责任的使用它,这样将会使你的代码很丑陋,将会使代码难以维护。 Mvc模式: 模型:通常代表着你的数据结构和数据库的接口; 视图:包含了页面模板和输出; 控制器:处理页面的请求。 这种分离是代码更整洁,更容易维护。 4.安全 在php中,可能你已经想过很多办法对输入和输出进行过滤了,以防止您的网站被攻击。手动的处理这些过滤将会很累,当你使用了框架以后,你就可以忘掉那些累了。 对于一个框架,大部分过滤工作可以帮您自动完成。例如codeigniter框架: 通过数据库的任何值将会被过滤这样防止sql注入性攻击。 所有html可以自动生成,如表单辅助函数和url辅助函数可以对输出自动过滤 所有用户输入的数据都可以进行过滤防止xss攻击。 想要加密cookie只需要改变一个配置选项就可以了。 5.使用少的代码,提高开发速度 所有的php框架都会有一个学习曲线,但是一点你越过了谷峰,你就会享受快速开发带来的乐趣了。 使用框架意味着你写更少的代码,这就意味着更少的时间花在打字上面。你不必为每个项目去查找第三方的类库,因为框架已经帮你提供了很多类库了。 此外,因为你的代码已经以一种方式默认的组织起来了,这样你就能更快的发现错误和维护代码,对你现在的代码进行更改。 6.社区支持 所有流行的php框架在背后都有一个很活跃的社区。你可以和其他开发人员在寻求帮助、讨论或反馈。 7.增强就业竞争力 不知道你最近有没有看过,一些公司的职位要求都需要有框架的使用经验,作为一个web开发人员拥有php框架的的使用经验将会增强就业竞争力。 8.性能 反对使用php框架的大部分人都会说框架降低了php的性能。 不过首先你应该明白,开发的费用远远高于服务器硬件的价格。节省开发和维护的时间上的钱有可能超过任何额外需要花费在服务器上面的钱。 把上面说的这些抛到一边去,你实际上也可以使用php框架获得性能上的优势。框架本身带有一些工具,它们能帮你做缓存、测试和分析等等。 现代的一些框架也都是动态的加载它所需要的一些代码的。 9.适合团队 Php框架可以为帮你创建一个合适的环境,提供良好的团队合作方式。你可以让设计师工作在视图层上面,让数据库工程师工作在模型层上面,让聪明的程序员反复的使用类库和插件。 你也可以让别人建立单元测试,因为php框架本身带有很多工具。 10.很有趣 这点实际上可能是所有理由当中最重要的一点了。当你的工作充满乐趣的时候,你的工作就会更加高效。如果你一直使用老式的php编码多年,或者对它已经非常厌倦了。开始使用框架将会给你增加一些士气,就像一个新的玩具一样,并且你用框架同样可以做很多很酷的事情。至少我当初第一次使用框架的时候就是这种感觉。我相信很多web开发人员都会有类似的经历。 结论: 使用php框架可能不是你的最佳选择,但是,你应该使用对web世界保持开发的态度,不断从网络中新的技术新的发展来学习知识。今天框架很流行很火爆,我们仍然不知道php框架明天将会是怎样的,但我想要说的是,php框架绝对是值得探讨的。 文章来自:http://www.phpall.cn/forum/read.php?tid=407

configuration of xampp

2009.11.18 1. 下载xampp并安装 下载地址:http://www.apachefriends.org/zh_tw/xampp-linux.html#1343 安装 下载完成后,只要输入下列命令: (1).进入Linux命令模式,切换成为系统管理者: su (2).将下载的压缩档解压缩到 /opt下: tar xvfz xampp-linux-1.5.3a.tar.gz -C /opt 注意:请使用这些指令来安装XAMPP,不要使用任何微软操作系统底下的工具程序来解压缩档案, 它会使得程序无法正确执行。 注意2:这个指令会覆盖掉旧有的XAMPP版本。 这样就完成了。XAMPP现在已经安装在 /opt/lampp 目录下了。 启动 要启动XAMPP只要执行下列的指令: /opt/lampp/lampp start 现在在你的画面上,你会看到类似下方的这些讯息: Starting XAMPP 1.5.3a… LAMPP: Starting Apache… LAMPP: Starting MySQL… LAMPP started. Apache 和 MySQL 现在已经启动了。 2. 从缺省PHP5切换到PHP 4.3.11 /opt/lampp/lampp php4 3. 修改httpd.conf (可选,在我安装的XAMPP里,默认是没有的。如果有需要,请手动添加) AddDefaultCharset ISO-8859-1 到GB2312 4. 修正xampp的安全问题 设置LAMPP […]

php关于时间的函数

PHP :time(),date(),mktime()日期与时间函数库{经常会忘却掉} checkdate : 验证日期的正确性。 date : 将服务器的时间格式化。 strftime : 将服务器的时间本地格式化。 getdate : 获得时间及日期信息。 gettimeofday : 取得目前时间。 gmdate : 取得目前与 GMT 差后的时间。 easter_date : 计算复活节日期。 easter_days : 计算复活节与三月廿一日之间日期数。 mktime : 取得 UNIX 时间戳记。 gmmktime : 取得 UNIX 时间戳记的格林威治时间。 time : 取得目前时间的 UNIX 时间戳记。 microtime : 取得目前时间的 UNIX 时间戳记的百万分之一秒值。   checkdate 验证日期的正确性。   语法: int checkdate(int month, int day, […]