好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php错误机制 php错误和异常

很多站长朋友们都不太清楚php错误机制,今天小编就来给大家整理php错误机制,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP-php怎样用try catch 抛出错误给其他程序处理 2、 php的异常处理机制是不是太鸡肋? 3、 为什么说PHP是世界上最好的语言 4、 php进程超时接口返回504错误分析 PHP-php怎样用try catch 抛出错误给其他程序处理

推荐你看一下thinkphp的错误处理机制。

对于异常错误,可以使用

register_shutdown_function();

set_error_handler();

set_exception_handler();

同时也推荐你学习一下,这些函数的使用,不要单单仅限于 使用 try cath 这种方式

php的异常处理机制是不是太鸡肋?

不一定吧,有的项目需要过滤表单数据,数据库操作异常回滚,等等操作,就需要这种自定义的异常处理的类

为什么说PHP是世界上最好的语言

部署简单

很多其他行业的公司,希望有一个网站,他们并没有多少预算在网站上,可能只是随便买了一个虚拟主机,这时恐怕最好的选择就是 PHP 了。支持 Ruby, Python 之类的语言的虚拟主机很少,ASP 需要 Windows 的服务器,只有 PHP 可以运行在任何一家虚拟主机上。

学习门槛低

一开始 PHP 是专为 Web 设计的语言(虽然现在已经在向通用编程语言靠拢了), 学习和使用门槛很低,建一个 .php 文件就是网页,用 $_GET['XXOO'] 就可以获取到 GET 参数。而其他通用编程语言,原生并不支持这些与 HTTP 协议相关的功能,这时就需要选择并学习一款 HTTP 框架才能编写 Web 应用,例如 Tornado(Python), Ruby on Rails 等。

语法简单

PHP 一开始是弱类型的(现在只是不那么弱了而已,还算不上强类型),几乎不需要考虑类型转换的事情,甚至在一开始很长的一段时间里,都没有支持面向对象。PHP 可以非常简单地从数据库中存取数据,而一半的网站也无非是从数据库中读写数据。

因为 PHP 是以 CGI 或 FastCGI 的形式运行的,因此也不必考虑内存管理的问题,反正每次请求后,内存都会被释放。

PHP 的错误处理机制也很简单——如果出错就在页面上打印错误信息。想要关闭错误提示也同样简单。

很多重量级的开源项目

如 WordPress(博客), Typecho(博客), Drupal(CMS), MediaWiki(WIKI), DiscuzX(论坛) 等等,可以说想要不折腾地部署一个网站 PHP 就是最佳选择。

经过了历史考验

PHP 毕竟也算是老牌 Web 编程语言了,能踩的坑已经被前辈踩过了,大量的库可以重用,要招会 PHP 的开发人员也很容易,而 Node.js, Golang 等等新语言则会遇到技术储备,人才储备方面的问题。而 Python, Ruby 也不要高兴得太早——虽然你们很早就被发明出来了,但那时候还没多少人搞 Web 开发。

php进程超时接口返回504错误分析

在一次接口测试中,发现返回的http 504 time out 的错误,然后查看了php-fpm的错误日志,发现了如下错误

从表现上看,是php进程超时导致的进程被kill了,那么这个超时时间以及kill的机制是跟哪些参数有关呢,这里系统这里一下。

Nginx服务一般因为php的错误或者超时会有两种错误码502 bad Gateway 或者 504 Gateway Time-out

一种情况是php产生了语法错误,比如循环调用、变量作用域错误、方法不存在等,如果开启错误日志输出的话,这种错误在php-fpm的错误日志中是可以看到调用栈信息的。

另外一种情况可能就是超时引起的php-fpm主动kill的情况,在php.ini和php.fpm中有两个配置项,用来管理php脚本的最大执行时间

当php脚本的执行时间超过这个时间时,PHP-FPM不只会终止脚本的执行,还会终止执行脚本的Worker进程。所以Nginx会发现与自己通信的连接断掉了,就会返回给客户端502错误。

以顶部的错误为例,当报502错误是,nginx的errorlog中有如下日志,:

所以只需将这两项的值调大一些就可以让PHP脚本不会因为执行时间长而被终止了。request_terminate_timeout可以覆盖max_execution_time,

所以如果不想改全局的php.ini,那只改PHP-FPM的配置就可以了。

此外要注意的是Nginx的upstream模块中的max_fail和fail_timeout两项。这两个配置表示在fail_timeout事件内,如果fail的测试达到max_fail,那么在接下来的fail_timeout时间内,Nginx都会认为上游服务器挂掉了,都会返回502错误。

所以可以将max_fail调大一些,将fail_timeout调小一些。

PHP-FPM设置的脚本最大执行时间已经够长了,但执行耗时PHP脚本时,发现Nginx报错从502变为504了。这是为什么呢?

因为我们修改的只是PHP的配置,Nginx中也有关于与上游服务器通信超时时间的配置

以Nginx超时时间为90秒,PHP-FPM超时时间为300秒为例,报504 Gateway Timeout错误时的Nginx错误访问日志如下:

调高这三项的值(主要是read和send两项,默认不配置的话Nginx会将超时时间设为60秒)之后,504错误也解决了。

而且这三项配置可以配置在http、server级别,也可以配置在location级别。担心影响其他应用的话,就配置在自己应用的location中吧。

要注意的是factcgi_connect/read/send_timeout是对FastCGI生效的,而proxy_connect/read/send_timeout是对proxy_pass生效的。

参考链接: 感谢分享!

关于php错误机制的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php错误机制 php错误和异常的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did224060
更新时间:2023-05-08   阅读:26次

上一篇: php注释永无bug php语言注释方式有哪些方式?

下一篇:html标签和php html标签和属性

最新资料更新

  • 1.包含catflag.php的词条
  • 2.phpmysql框架 php框架yii
  • 3.修改文件限制php php修改上传文件大小
  • 4.phpword读写 php读写word 文档
  • 5.php降低curl版本 php怎么升级版本
  • 6.php跳转url源码 网页跳转源码
  • 7.php大牛交流教程 php大神
  • 8.token验证php Token验证失败异地登陆什么意思
  • 9.登录注册的php代码 php用户注册登录代码
  • 10.php相除保留到分 php除法保留小数
  • 11.php配置smtp php配置文件的文件名是什么
  • 12.php有类似cmap 与php类似的语言
  • 13.notepad写php notepad可以写c语言吗
  • 14.php根据城市定位 php获取位置信息
  • 15.phpsessions phpsession使用
  • 16.php蓝色的代码 html颜色代码
  • 17.数组对象转为数组php 对象数组转string
  • 18.php识别条码 php代码扫描
  • 19.phpml源码安装 下载了个php源码包,怎么使用
  • 20.php加密数据用js解密 php加密 js解密

CopyRight:2016-{hedonghua:year}{hedonghua:sitegs} 备案ICP:湘ICP备09009000号-16 {hedonghua:sitejym}
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2026 「好得很程序员自学网」
[ SiteMap ]