1、線上環境出錯時,你是如何快速的定位到錯誤代碼?
> 1、是否有日志?(這個是關鍵,錯誤報告本身都會記錄到日志里,如果面試官說沒有日志,那你就慫他);
> 2、錯誤發生的現象:指定人發生還是所有請求都會,是以前就會還是第一次出現,服務器尤其是數據庫服務器負載程度,錯誤是否可以重現;
3、最近是否發布代碼,是否改動了線上的服務器環境;
4、以前是否有類似事件發生;
萬能代碼:
register_shutdown_function(function(){ var_dump(error_get_last()); });
答案來源:
https://segmentfault.com/q/1010000006035437
2、php中,你是如何接管系統的異常和錯誤處理的?
> 使用register_shutdown_function,set_error_handler,set_exception_handler
3、下面代碼運行的結果是?說說為什么
~~~
function myException($exception)
{
echo "Exception:" , $exception->getMessage();
}
set_exception_handler('myException');
try{
throw new Exception('Uncaught Exception occurred');
}catch(Exception $e){
echo $e->getMessage();
}
~~~
> 輸出結果:Uncaught Exception occurred
set_exception_handler() 函數可設置處理所有未捕獲異常的用戶定義函數,異常已被try catch 捕獲,不會運行myException
推薦博文:
https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html
http://www.w3school.com.cn/php/php_exception.asp
- 前言
- 函數參考
- Socket 函數
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_getpeername
- socket_getsockname
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_select
- socket_send
- socket_set_block
- socket_set_nonblock
- SplQueue
- 魔術方法
- 魔術常量
- 雜項
- backlog的用處
- new self()和new static()的區別
- PHP變量的生命周期
- PHP抽象類
- 對象接口
- PHP中的常用關鍵字
- 常量
- 內存泄露
- global 與 $GLOBAL
- 簡單說明CGI和動態請求是什么
- 設計模式
- 單例模式
- 工廠模式
- 適配器模式
- 策略模式
- 觀察者模式
- 控制反轉IoC簡介
- session
- use_trans_sid
- auto_start
- session_id
- cookie_secure
- 面試
- 數據庫相關
- 語句相關
- 索引相關
- 字段相關
- PHP相關
- 字符串相關
- 函數相關
- 運算符優先級相關
- 錯誤相關
- redis相關
- 10個常見的Redis面試"刁難"問題
- mysql
- MySQL中的鎖
- MySQL存儲引擎MyISAM 和 InnoDB的區別
- MySQL半同步復制
- explain 命令詳解
- 索引
- 數據庫事務
- MySQL和B樹的那些事
- git
- github----向開源框架提交pr的過程
- 推薦博客
- linux
- 命令
- free
- 高并發
- 搶購/秒殺功能
- 算法
- 一致性Hash算法