例如,我先寫一段**:
<?php
echo5%
0;
這樣一定會出錯的,因為0不能做除數。
頁面上顯示:
php會直接輸出這個除以0的致命錯誤的資訊。
當我們執行乙個很長的過程時出現了邏輯上的錯誤(語法上並沒有錯誤,這種bug比較難解決),一時沒有頭緒,不妨先試著輸出每個過程的執行結果,看看到底哪一步的執行脫離了預想的設計。這是最直接、最低效的除錯方法。
直接輸出的話,可以使用二分法,即在過程的中間進行輸出,看看結果對不對。如果對的話,前面的一定沒錯,後面的一定有錯;如果不對的話,前面的一定有錯,後面的不一定沒錯。這樣一次可以排除一半的**,盡可能地提高效率。
如果我在程式執行過程中新增了對異常的得當處理,會大幅提公升debug的效率。例如:
try
catch
(exceptoin $e
)
日誌可以記錄程式的執行過程。原始的輸入和處理後的輸出是一定要記錄在日誌中的。推薦安裝seaslog擴充套件。
像phpstorm之類的ide一般都會有斷點除錯的外掛程式,安裝之後可以單步執行,並反映每一步的程式狀態。
php併發加鎖以支付為例
本文介紹了php併發加鎖示例,對資料進行加鎖,只容許乙個使用者在乙個時間內進行操作,這個時候就需要用到鎖了,需要的朋友可以了解一下。在工作專案中,會遇到一些php併發訪問去修改乙個資料問題,如果這個資料不加鎖,就會造成資料的錯誤。下面我將分析乙個財務支付鎖的問題。希望對大家有所幫助。1 沒有應用鎖機...
php擴充套件編譯(以memcached為例)
2 解壓並切換進入擴充套件包的目錄 3 使用phpize工具自動生成 configure 4 configure配置擴充套件 5 編譯並安裝擴充套件 下面以編譯php的memcached擴充套件來做乙個 參考 編譯memcached需要libmemcached庫,所以我們先安裝一下libmemcac...
PHP運算元據庫(以MySQL為例)
建立與資料庫與伺服器之間的連線 如果需要在呼叫函式時忽略錯誤或者警告可以在函式名之前加上 資料查詢的查詢語句 1.建立與資料庫與伺服器之間的連線 connection mysqli connect localhost root 0000 users if connection 2.基於剛剛建立的連線...