Maison développement back-end tutoriel php 对于Web开发中要注意的18个关键性错误

对于Web开发中要注意的18个关键性错误

Nov 11, 2016 pm 03:31 PM
php

前几年,我有机会能参与一些有趣的项目,并且独立完成开发、升级、重构以及新功能的开发等工作。

  本文总结了一些 PHP 程序员在 Web 开发中经常忽略的关键错误,尤其是在处理中大型的项目上问题更为突出。典型的错误表现在不能很好区分各种开发环境和没有使用缓存和备份等。

  下面以 PHP 为例,但是其核心思想对每一个 Web 程序员都是适用的。

  应用程序级别的错误

  1、在开发阶段关闭了错误报告

  我唯一想问的是:为什么?为什么在开发的时候要关闭错误报告?

  PHP 有很多级别的错误报告,在开发阶段我们必须将它们全部开启。

  如果你觉得错误不会发生,那么你把程序太理想化了,在现实世界中,错误是必然的。error_reporting 和 display_error 是两个完全不同的方法,error_reporting ()设置了错误的级别,而 display_errors 则是设置错误信息是否要被输出。

  在开发阶段,错误报告的级别应该设置成最高的,比如以下设置: error_reporting (E_ALL);以及 ini_set (‘display_errors’, true);

  2、淹没错误

  和上一点相反,很多程序员喜欢将错误淹没了,你明知道错误会发生,但是你选择将错误隐藏掉,然后可以早早回家睡大觉,殊不知将来会发生更严重的错误。

  3、代码中任何地方都没有使用日志

  软件开发的一开始你就要牢记使用日志,不能到项目结束了才去弥补日志功能。很多程序员都会用这样或那样的手段进行日志记录,但是很少有人能真正用日志来记录异常信息,试问一个没有人查看的日志系统有什么用?

  4、没有使用缓存

  在的应用系统中,我们可以在多个系统层次上使用缓存,比如在服务端、应用端和数据库端等。和日志一样,缓存也应该在一开始就应用到系统中去,你可以在开发阶段禁用缓存,等到了产品发布后再将缓存开启。

  5、丢弃了最佳实践和设计模式

  你看到过多少人使用自己的密码加密算法?很遗憾的告诉你,有很多,因为他们认为将更了解它。

  最好的实践方式和设计模式已经由前辈创建了,这往往比你自己再造一个轮子要来的简单奏效,我们开发者只需要熟练掌握这些设计模式并且合理地应用在项目中即可,比如一些加密算法。

  6、没有使用自动化测试

  在每一个 Web 项目中都会使用到测试,就像日志一样,如果没有人管理和使用,那么测试也是一无是处的。

  运行测试工程是一项枯燥乏味的工作,幸好有一系列工具帮助我们实现自动化测试。在 PHP 开发中,有一款很好的测试工具叫 Jenkins,使用起来非常方便。

  7、没有做代码审查

  在团队中工作是一项非常大的挑战,因为每一个成员都有自己不同的工作习惯和方式,如果没有良好的规范,那么项目开发就会走很多弯路。

  团队中的每一个成员都应该互相审查代码,就像单元测试,它可以帮助项目变得更加干净和一致性。

  8、编程只考虑理想情况

  你是否遇到过自己或者别人的代码在交到客户手中后经常出问题,甚至是乱套了?我当然没有。

  出现这种情况往往是因为开发者懒惰了,只考虑了理想情况,这会导致数据库崩溃了、PHP 发生致命错误、甚至是服务器被黑。程序员在写代码时不仅要考虑最理想的情况,更要考虑最坏的情况,思考全面,才能让代码覆盖所有的情况。

  9、没有正确运用面向对象编程的思想

  大部分 PHP 初学者都不会再其代码中运用面向对象的思想,因为这个概念在刚开始的时候很难理解

  当然面向对象的概念并不是简单地将一些类组织在一起

  对象、属性、方法、继承和封装等都是 OOP 中最基本的概念,开发者正确使用了面向对象设计模式后,就有能力写出更干净、更有扩展性的代码了。

  10、“飞行模式”(On-the-fly)编程

  大部分开发者都会遇到这样的情况:“快,客户需要一项新功能,要能运行 ASAP”,于是你就在源代码上新增一些功能,然后直接上传到正在运行的服务器上,这种编程方式我们称其为“飞行模式”(On-the-fly)编程。

  我们在开发软件时,尤其是中大型的项目,都必须按照工作流程来进行分析、编程和发布,这将大大减少未来软件的 bug。这种“飞行模式”并不可取。

  数据库级别的错误

  11、没有将数据库读写分离

  为了能长时间运行复杂的系统,每一个程序员都应该考虑到系统的可扩展性,系统 99% 的时间都不需要考虑扩展,因为并没有如此大的流量。

  为什么要数据库读写分离?

  在每一个系统中,数据库将会是第一个出现的瓶颈,在大流量的冲击下,数据库很可能将会是第一个阵亡的。所以大部分情况下我们会用多个数据库来分散流量,开发者经常会使用 Master – Slave 模式或者 Master – Master 模式。Master – Slave 是最受欢迎的一种数据库分压模式,它会将指定的 select 语句路由到每一个 Slave 服务器,这样 Master 服务器的压力会减轻不少。

  12、代码只能连接到一个数据库

  这和上一个错误非常像,但是开发者有时候因为某些原因需要连接到多个数据库,比如你会将用户日志、活动信息流、实时数据分析等高负载的数据放到不同的数据库中来缓解对主数据库的压力。

  13、没有检测数据库漏洞

  如果你不对数据库进行漏洞检测,就相当于给大部分黑客敞开了服务器的大门。

  在众多漏洞中,数据库漏洞是最脆弱的,最常见的就是 SQL 注入。因此定期做数据库漏洞检测还是很有必要的。

  14、数据表不建索引

  索引在数据表中有着非常重要的作用,合适的索引可以提高每张表的性能,这里有一篇文章就讲述了如何创建索引以及何时创建索引。

  15、没有使用事务机制

  数据完整性对 Web 系统非常重要,如果数据一致性发生错误,那么整个系统都会崩溃并且难以修复。合理地运用数据库的事务机制将有效地解决这个问题。比如你要保存用户数据,在 table1 中有e-mail, username 和 password,table2 中有 first name, last name,和 gender age。我们可以利用事务对两张表更新时保证数据同时被更新或者同时不被更新。

  16、没有加密敏感数据

对于数据库中的敏感信息,如果你不对它们进行加密,或者用简单的算法进行加密,那么在 2014 年你肯定会遇到一些麻烦的问题,黑客们一旦入侵你的数据库,用户的密码或者其他重要信息就会一览无余。

 PHP5.5 中提供了一个哈希加密方法,使用如下:

$hash = password_hash ( $password, PASSWORD_BCRYPT );

  17、没有备份

  看到下面这张图片没,如果遇到这样的情况,你又没有备份,那么一切都 over 了。

101552ivbihjjklhkuuuyy.jpg

  18、没有监控

  没有监控,你将不知道接下来会发生什么事情,对于监控,要注意以下几个问题:

•有多少人可以直接访问这个应用服务?

•服务器是否在高负载下运行?

•我们需要用另一台数据库服务器来扩展系统吗?

•应用系统的失败点在哪里?

•系统目前正处于离线状态吗?


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

See all articles