为什么php不能用了,为什么php不能做大型系统?
为什么php不适合应用于大型系统的打造呢?大家一定认为是安全性的问题。但是事实上不仅仅是这样。下面为大家介绍一下。
为什么php不能做大型系统?原因是什么?
混乱的许可证
你也许认为PHP是免费的,所有的在手册中提到的PHP模块也是免费的。错了!例如,如果你想在PHP中生成PDF文件,你会在手册中发现两个模块:PDF 和 ClibPDF。但是这两个都是有商业许可证的。所以,你所使用的每个模块,你都要确保你同意他的许可证。
不一致的函数命名规则
有些函数名称是有多个单词组成的。一般有三种单词组合的习惯:
直接拼接:getnumberoffiles
用下划线分开:get_number_of_files
骆驼法则:getNumberOfFiles
大部分语言选择其中一中。但是PHP都用到了。
魔法引用的地狱
魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击。这很好。但是出于某些原因,你可以在php.ini中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。
许多PHP模块都不是线程安全的
在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非核心模块不一定是。但是十次有九次,你想要在PHP脚本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模式支持使PHP常被认为是Apache 2依然不流行的原因之一。
不标准的日期格式字符
很多程序员对 日期格式字符 都很熟悉,它是从UNIX和C语言中来的。其他一些编程语言采用了这个标准,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的当天,在PHP中他表示一个月中的当天。然而使事情更混乱的是:Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数,却使用了C/UNIX的格式化字符。
推荐学习:PHP教程
为什么php不能用了,为什么php不能做大型系统?相关推荐
- 从言行合一到知行合一
本篇记录突然的随想,偶尔停留 2022-01-17 rest不只是一个简单的api约束分享一本rest小手册,如何把东西变得 RESTful! 2021-12-06 规划 未来编程. 未来需要什么 ...
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- 系统遇到并发瓶颈时的优化方向
1. 设计高质量代码优化Map 使用读写锁,读写锁 读多写少(存储用户连接信息) map不要太大. 2. 突破系统瓶颈 优化连接数 linux下的系统最大连接数 3. 降低对Cpu资源的使用 降低io ...
- Access to XMLHttpRequest at file from origin ‘null‘ has been blocked by CORS policy谷歌浏览器本地打开项目js文件报错
Access to XMLHttpRequest at 'file:///xxxxx/PQ.BaseInfo.proto' from origin 'null' has been blocked by ...
- mysql并发更新数据,多用户并发修改数据解决方案。
mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...
- 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗
在 <微服务架构设计模式> 一书中,作者总结了关于微服务的一些"重点",原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻.但如同我给所有客户的忠告一样,我想对 ...
- mongo报错:not authorized on bb to execute command { create: \“xxx\“...}
mongo报错: {"ok" : 0,"errmsg" : "not authorized on bb to execute command { cr ...
- Docker容器的备份与恢复,Docker镜像的备份与恢复
1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表.要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命 ...
- 微信公众号为指定openid用户推送消息
微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...
最新文章
- Windows Service 2008 R2 远程桌面关闭,自动注销的解决方法
- 题解 【USACO 4.2.1】草地排水
- Third Week :Linux下的C语言
- __declspec(dllexport)的作用
- JavaScript(一)——快速入门
- 原文翻译:深度学习测试题(L1 W3 测试题)
- “有一个产品经理的女朋友是什么体验?”
- 【Linux】一步一步学Linux——mesg命令(245)
- 【docker】常用docker命令,及一些坑
- 助力双十一,促销海报设计模板收好!
- matlab期中考试卷,湖南大学matlab期中考试试卷分析
- barco控制软件支持linux_vnc远程控制软件linux,在linux系统上能够使用的vnc远程控制软件...
- Portal: 西电捷通TISec®技术
- mysql字段前拼接字符串_Mysql之字段字符串拼接
- Label-Specific Dual Graph Neural Network for Multi-Label Text Classification,ACL2021 finding
- (最小割求最小割集)poweroj2883病毒侵染
- 我是一只IT小小鸟——读后感
- GIS地理信息系统相关整理
- PM2部署React项目(Ubuntu服务器)
- pythonbmi代码_用python写一个BMI体制指数测试
热门文章
- Retrofit的网络框架介绍
- java行转列_最近面试 Java 后端开发的感受!
- Unity2020.1新功能探路:Profiler相关更新
- 了解关联、聚合和组合
- 带有.NET Core App的Identity Server 4
- Ubuntu 20.04 LTS 代号 “Focal Fossa“,明年 4 月正式发布
- 超炫酷的 Docker 终端 UI lazydocker,想看哪里点哪里
- Odoo10参考系列--Odoo指导方针
- android平台java编程规范_Android Java类编写规范+优化建议
- c语言成绩管理系统不用结构体,不用指针链表和结构体数组怎么编学生成绩管理系统啊...