和许多开源项目一样,PHP 变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种 Web 问题的工具需求所引起的案例,因此当 PHP 刚出现的时候,这种工具需求全部聚焦到PHP的身上。根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用 PHP,但是这并不意味着 PHP 对所有问题都适用。它只是可以一个解决大部分问题的 front-end 脚步语言。我们测试过这个方法,但是发现如果要扩展它的伸缩性,代价太高。如果用一个整体的数据结构,在大流量面前,你将会面临服务器硬件的问题。在 MU 里面。用户们都被分布到独立的表格当中,并且可以轻易地组织起来。举个例子,
WordPress.com把用户的数据分散存储到 4096 个数据库中,这些数据库可以分散大规模的数据访问,实现流量和压力分流。有一条 web 开发的基本原则,我重复多少遍都觉得不够,那就是:千万不要相信你的用户,同时要假设你网站中的每个数据单元都是从用户那里收集来的恶意代码。很多时候,你必须用 JAVAscript 在客户端检验表单提交过来的内容, 如果你习惯了如此,那么,这是一个好习惯。如果安全性对你来说很重要,这就是最重要最需要学习的原则。最后,变得偏执一点吧。除非你认为你的站点永远不会受到攻击,否则就正视所有的问题,当问题真正发生的时候,你的情况会变得很糟。你需要把每个用户都看成会带来一场攻防站的黑客,想尽一切办法来保护站点的安全,同时想好相应问题的解决方案。如果你拥有一个访问量很大,但更新并不频繁的站点(比如 blog,基于某种 CMS),或许它需要进行一些改造,这些改造不会花费太多的时间,但是对性能有突出的贡献。 如果要为一个复杂/更新频率很快的站点建立缓存机制,过程可能会很曲折,但是好处也是显而易见的。紧凑的计划,长长的 to do lists 以及 deadlines 让开发人员非常苦闷。不过有些功能,比如 Eclipse Templates,可以有效减少编码的时间和出错的几率。过滤数据是我们经常需要做的事情,但是很多功能丰富的 PHP 内置过滤函数却不为人知。使用类似 filter_* 的 PHP 内置函数,我们几乎可以处理所有的过滤任务,包括数据类型验证/URL/email和IP地址验证/特殊字符处理等等。PHP 的易于使用有时候也有缺陷,因为并不严格的语法,经常会导致很多错误代码的诞生。但如果使用一个 PHP 框架,出错的几率就会大大减少。诚然,在某些情况下,这有点大材小用了,但是你可以清楚地看到,使用 Cron, MySQL, PHP 面向对象的方法以及 Pear::DB 这些便捷的工具来创建一个批处理工具并不是一件复杂的事情。两种方法我都尝试过,我认为 Cron 非常符合 ”Keep It Simple, Stupid” (KISS) 的原则,它让后台处理变得简单。与多进程的业务逻辑相比,它没有内存溢出的风险。你可以创建一个简单的批处理脚本,并且在 cron 中运行,这个脚本会定时检查是否有任务需要处理,处理完之后就会自动退出,因此你不用担心是否有进程卡壳,或者陷入死循环。我告诉人们,最重要的事情就是最大程度地开启 PHP 的错误报告,为什么?因为PHP 可能会隐藏很多小问题:

发表回复