[{"data":1,"prerenderedAt":826},["ShallowReactive",2],{"content-query-Ln2yNncq5l":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"category":5,"createdAt":10,"updatedAt":11,"body":12,"_type":820,"_id":821,"_source":822,"_file":823,"_stem":824,"_extension":825},"/article/coding/simple-debug-in-laravel","coding",false,"","在 Laravel 中簡單快速的 debug 方法","簡單記錄一下之前 debug 的方式。","2024-05-14","2025-12-22",{"type":13,"children":14,"toc":814},"root",[15,22,28,46,51,229,235,347,353,358,808],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20],{"type":21,"value":9},"text",{"type":16,"tag":23,"props":24,"children":26},"h2",{"id":25},"在程式中排查",[27],{"type":21,"value":25},{"type":16,"tag":17,"props":29,"children":30},{},[31,38,40],{"type":16,"tag":32,"props":33,"children":35},"code",{"className":34},[],[36],{"type":21,"value":37},"dd()",{"type":21,"value":39},"、",{"type":16,"tag":32,"props":41,"children":43},{"className":42},[],[44],{"type":21,"value":45},"dump()",{"type":16,"tag":23,"props":47,"children":49},{"id":48},"程式執行過慢",[50],{"type":21,"value":48},{"type":16,"tag":52,"props":53,"children":57},"pre",{"className":54,"code":55,"language":56,"meta":7,"style":7},"language-php shiki shiki-themes material-theme-palenight","$start = microtime(true);\n// your code...\n$end = microtime(true);\n$execution = $end - $start;\nLog::info(\"Execution time: $execution\");\n","php",[58],{"type":16,"tag":32,"props":59,"children":60},{"__ignoreMap":7},[61,95,105,130,175],{"type":16,"tag":62,"props":63,"children":66},"span",{"class":64,"line":65},"line",1,[67,73,79,84,90],{"type":16,"tag":62,"props":68,"children":70},{"style":69},"--shiki-default:#89DDFF",[71],{"type":21,"value":72},"$",{"type":16,"tag":62,"props":74,"children":76},{"style":75},"--shiki-default:#BABED8",[77],{"type":21,"value":78},"start ",{"type":16,"tag":62,"props":80,"children":81},{"style":69},[82],{"type":21,"value":83},"=",{"type":16,"tag":62,"props":85,"children":87},{"style":86},"--shiki-default:#82AAFF",[88],{"type":21,"value":89}," microtime",{"type":16,"tag":62,"props":91,"children":92},{"style":69},[93],{"type":21,"value":94},"(true);\n",{"type":16,"tag":62,"props":96,"children":98},{"class":64,"line":97},2,[99],{"type":16,"tag":62,"props":100,"children":102},{"style":101},"--shiki-default:#676E95;--shiki-default-font-style:italic",[103],{"type":21,"value":104},"// your code...\n",{"type":16,"tag":62,"props":106,"children":108},{"class":64,"line":107},3,[109,113,118,122,126],{"type":16,"tag":62,"props":110,"children":111},{"style":69},[112],{"type":21,"value":72},{"type":16,"tag":62,"props":114,"children":115},{"style":75},[116],{"type":21,"value":117},"end ",{"type":16,"tag":62,"props":119,"children":120},{"style":69},[121],{"type":21,"value":83},{"type":16,"tag":62,"props":123,"children":124},{"style":86},[125],{"type":21,"value":89},{"type":16,"tag":62,"props":127,"children":128},{"style":69},[129],{"type":21,"value":94},{"type":16,"tag":62,"props":131,"children":133},{"class":64,"line":132},4,[134,138,143,147,152,156,161,165,170],{"type":16,"tag":62,"props":135,"children":136},{"style":69},[137],{"type":21,"value":72},{"type":16,"tag":62,"props":139,"children":140},{"style":75},[141],{"type":21,"value":142},"execution ",{"type":16,"tag":62,"props":144,"children":145},{"style":69},[146],{"type":21,"value":83},{"type":16,"tag":62,"props":148,"children":149},{"style":69},[150],{"type":21,"value":151}," $",{"type":16,"tag":62,"props":153,"children":154},{"style":75},[155],{"type":21,"value":117},{"type":16,"tag":62,"props":157,"children":158},{"style":69},[159],{"type":21,"value":160},"-",{"type":16,"tag":62,"props":162,"children":163},{"style":69},[164],{"type":21,"value":151},{"type":16,"tag":62,"props":166,"children":167},{"style":75},[168],{"type":21,"value":169},"start",{"type":16,"tag":62,"props":171,"children":172},{"style":69},[173],{"type":21,"value":174},";\n",{"type":16,"tag":62,"props":176,"children":178},{"class":64,"line":177},5,[179,185,190,195,200,205,211,215,220,224],{"type":16,"tag":62,"props":180,"children":182},{"style":181},"--shiki-default:#FFCB6B",[183],{"type":21,"value":184},"Log",{"type":16,"tag":62,"props":186,"children":187},{"style":69},[188],{"type":21,"value":189},"::",{"type":16,"tag":62,"props":191,"children":192},{"style":86},[193],{"type":21,"value":194},"info",{"type":16,"tag":62,"props":196,"children":197},{"style":69},[198],{"type":21,"value":199},"(",{"type":16,"tag":62,"props":201,"children":202},{"style":69},[203],{"type":21,"value":204},"\"",{"type":16,"tag":62,"props":206,"children":208},{"style":207},"--shiki-default:#C3E88D",[209],{"type":21,"value":210},"Execution time: ",{"type":16,"tag":62,"props":212,"children":213},{"style":69},[214],{"type":21,"value":72},{"type":16,"tag":62,"props":216,"children":217},{"style":75},[218],{"type":21,"value":219},"execution",{"type":16,"tag":62,"props":221,"children":222},{"style":69},[223],{"type":21,"value":204},{"type":16,"tag":62,"props":225,"children":226},{"style":69},[227],{"type":21,"value":228},");\n",{"type":16,"tag":23,"props":230,"children":232},{"id":231},"印出-query",[233],{"type":21,"value":234},"印出 Query",{"type":16,"tag":52,"props":236,"children":238},{"className":54,"code":237,"language":56,"meta":7,"style":7},"\\DB::connection()->enableQueryLog();\n// your code...\n$queries = \\DB::getQueryLog();\ndd($queries)\n",[239],{"type":16,"tag":32,"props":240,"children":241},{"__ignoreMap":7},[242,279,286,324],{"type":16,"tag":62,"props":243,"children":244},{"class":64,"line":65},[245,250,255,259,264,269,274],{"type":16,"tag":62,"props":246,"children":247},{"style":69},[248],{"type":21,"value":249},"\\",{"type":16,"tag":62,"props":251,"children":252},{"style":181},[253],{"type":21,"value":254},"DB",{"type":16,"tag":62,"props":256,"children":257},{"style":69},[258],{"type":21,"value":189},{"type":16,"tag":62,"props":260,"children":261},{"style":86},[262],{"type":21,"value":263},"connection",{"type":16,"tag":62,"props":265,"children":266},{"style":69},[267],{"type":21,"value":268},"()->",{"type":16,"tag":62,"props":270,"children":271},{"style":86},[272],{"type":21,"value":273},"enableQueryLog",{"type":16,"tag":62,"props":275,"children":276},{"style":69},[277],{"type":21,"value":278},"();\n",{"type":16,"tag":62,"props":280,"children":281},{"class":64,"line":97},[282],{"type":16,"tag":62,"props":283,"children":284},{"style":101},[285],{"type":21,"value":104},{"type":16,"tag":62,"props":287,"children":288},{"class":64,"line":107},[289,293,298,302,307,311,315,320],{"type":16,"tag":62,"props":290,"children":291},{"style":69},[292],{"type":21,"value":72},{"type":16,"tag":62,"props":294,"children":295},{"style":75},[296],{"type":21,"value":297},"queries ",{"type":16,"tag":62,"props":299,"children":300},{"style":69},[301],{"type":21,"value":83},{"type":16,"tag":62,"props":303,"children":304},{"style":69},[305],{"type":21,"value":306}," \\",{"type":16,"tag":62,"props":308,"children":309},{"style":181},[310],{"type":21,"value":254},{"type":16,"tag":62,"props":312,"children":313},{"style":69},[314],{"type":21,"value":189},{"type":16,"tag":62,"props":316,"children":317},{"style":86},[318],{"type":21,"value":319},"getQueryLog",{"type":16,"tag":62,"props":321,"children":322},{"style":69},[323],{"type":21,"value":278},{"type":16,"tag":62,"props":325,"children":326},{"class":64,"line":132},[327,332,337,342],{"type":16,"tag":62,"props":328,"children":329},{"style":86},[330],{"type":21,"value":331},"dd",{"type":16,"tag":62,"props":333,"children":334},{"style":69},[335],{"type":21,"value":336},"($",{"type":16,"tag":62,"props":338,"children":339},{"style":75},[340],{"type":21,"value":341},"queries",{"type":16,"tag":62,"props":343,"children":344},{"style":69},[345],{"type":21,"value":346},")\n",{"type":16,"tag":23,"props":348,"children":350},{"id":349},"觀察本次-request-消耗的資源",[351],{"type":21,"value":352},"觀察本次 Request 消耗的資源",{"type":16,"tag":17,"props":354,"children":355},{},[356],{"type":21,"value":357},"分別印出記憶體使用量、記憶體使用峰值、CPU 使用時間(s)",{"type":16,"tag":52,"props":359,"children":361},{"className":54,"code":360,"language":56,"meta":7,"style":7},"$startMemory = memory_get_usage();\n$cpuStart = getrusage();\n// your code...\n$endMemory = memory_get_usage();\n$peakMemory = memory_get_peak_usage();\n$cpuEnd = getrusage();\ndd(\"Memory: \" . (($endMemory - $startMemory) / 1024 / 1024) .\n    \"MB。 Peak Memory: \" . ($peakMemory / 1024 / 1024) . \"MB。 CPU: \" . (($cpuEnd['ru_utime.tv_sec'] - $cpuStart['ru_utime.tv_sec']) +\n        ($cpuEnd['ru_utime.tv_usec'] - $cpuStart['ru_utime.tv_usec']) / 1000000));\n",[362],{"type":16,"tag":32,"props":363,"children":364},{"__ignoreMap":7},[365,390,415,422,446,471,496,581,728],{"type":16,"tag":62,"props":366,"children":367},{"class":64,"line":65},[368,372,377,381,386],{"type":16,"tag":62,"props":369,"children":370},{"style":69},[371],{"type":21,"value":72},{"type":16,"tag":62,"props":373,"children":374},{"style":75},[375],{"type":21,"value":376},"startMemory ",{"type":16,"tag":62,"props":378,"children":379},{"style":69},[380],{"type":21,"value":83},{"type":16,"tag":62,"props":382,"children":383},{"style":86},[384],{"type":21,"value":385}," memory_get_usage",{"type":16,"tag":62,"props":387,"children":388},{"style":69},[389],{"type":21,"value":278},{"type":16,"tag":62,"props":391,"children":392},{"class":64,"line":97},[393,397,402,406,411],{"type":16,"tag":62,"props":394,"children":395},{"style":69},[396],{"type":21,"value":72},{"type":16,"tag":62,"props":398,"children":399},{"style":75},[400],{"type":21,"value":401},"cpuStart ",{"type":16,"tag":62,"props":403,"children":404},{"style":69},[405],{"type":21,"value":83},{"type":16,"tag":62,"props":407,"children":408},{"style":86},[409],{"type":21,"value":410}," getrusage",{"type":16,"tag":62,"props":412,"children":413},{"style":69},[414],{"type":21,"value":278},{"type":16,"tag":62,"props":416,"children":417},{"class":64,"line":107},[418],{"type":16,"tag":62,"props":419,"children":420},{"style":101},[421],{"type":21,"value":104},{"type":16,"tag":62,"props":423,"children":424},{"class":64,"line":132},[425,429,434,438,442],{"type":16,"tag":62,"props":426,"children":427},{"style":69},[428],{"type":21,"value":72},{"type":16,"tag":62,"props":430,"children":431},{"style":75},[432],{"type":21,"value":433},"endMemory ",{"type":16,"tag":62,"props":435,"children":436},{"style":69},[437],{"type":21,"value":83},{"type":16,"tag":62,"props":439,"children":440},{"style":86},[441],{"type":21,"value":385},{"type":16,"tag":62,"props":443,"children":444},{"style":69},[445],{"type":21,"value":278},{"type":16,"tag":62,"props":447,"children":448},{"class":64,"line":177},[449,453,458,462,467],{"type":16,"tag":62,"props":450,"children":451},{"style":69},[452],{"type":21,"value":72},{"type":16,"tag":62,"props":454,"children":455},{"style":75},[456],{"type":21,"value":457},"peakMemory ",{"type":16,"tag":62,"props":459,"children":460},{"style":69},[461],{"type":21,"value":83},{"type":16,"tag":62,"props":463,"children":464},{"style":86},[465],{"type":21,"value":466}," memory_get_peak_usage",{"type":16,"tag":62,"props":468,"children":469},{"style":69},[470],{"type":21,"value":278},{"type":16,"tag":62,"props":472,"children":474},{"class":64,"line":473},6,[475,479,484,488,492],{"type":16,"tag":62,"props":476,"children":477},{"style":69},[478],{"type":21,"value":72},{"type":16,"tag":62,"props":480,"children":481},{"style":75},[482],{"type":21,"value":483},"cpuEnd ",{"type":16,"tag":62,"props":485,"children":486},{"style":69},[487],{"type":21,"value":83},{"type":16,"tag":62,"props":489,"children":490},{"style":86},[491],{"type":21,"value":410},{"type":16,"tag":62,"props":493,"children":494},{"style":69},[495],{"type":21,"value":278},{"type":16,"tag":62,"props":497,"children":499},{"class":64,"line":498},7,[500,504,508,512,517,521,526,531,535,539,543,548,553,558,564,568,572,576],{"type":16,"tag":62,"props":501,"children":502},{"style":86},[503],{"type":21,"value":331},{"type":16,"tag":62,"props":505,"children":506},{"style":69},[507],{"type":21,"value":199},{"type":16,"tag":62,"props":509,"children":510},{"style":69},[511],{"type":21,"value":204},{"type":16,"tag":62,"props":513,"children":514},{"style":207},[515],{"type":21,"value":516},"Memory: ",{"type":16,"tag":62,"props":518,"children":519},{"style":69},[520],{"type":21,"value":204},{"type":16,"tag":62,"props":522,"children":523},{"style":69},[524],{"type":21,"value":525}," .",{"type":16,"tag":62,"props":527,"children":528},{"style":69},[529],{"type":21,"value":530}," (($",{"type":16,"tag":62,"props":532,"children":533},{"style":75},[534],{"type":21,"value":433},{"type":16,"tag":62,"props":536,"children":537},{"style":69},[538],{"type":21,"value":160},{"type":16,"tag":62,"props":540,"children":541},{"style":69},[542],{"type":21,"value":151},{"type":16,"tag":62,"props":544,"children":545},{"style":75},[546],{"type":21,"value":547},"startMemory",{"type":16,"tag":62,"props":549,"children":550},{"style":69},[551],{"type":21,"value":552},")",{"type":16,"tag":62,"props":554,"children":555},{"style":69},[556],{"type":21,"value":557}," /",{"type":16,"tag":62,"props":559,"children":561},{"style":560},"--shiki-default:#F78C6C",[562],{"type":21,"value":563}," 1024",{"type":16,"tag":62,"props":565,"children":566},{"style":69},[567],{"type":21,"value":557},{"type":16,"tag":62,"props":569,"children":570},{"style":560},[571],{"type":21,"value":563},{"type":16,"tag":62,"props":573,"children":574},{"style":69},[575],{"type":21,"value":552},{"type":16,"tag":62,"props":577,"children":578},{"style":69},[579],{"type":21,"value":580}," .\n",{"type":16,"tag":62,"props":582,"children":584},{"class":64,"line":583},8,[585,590,595,599,603,608,612,617,621,625,629,633,637,642,647,651,655,659,664,669,674,679,683,688,693,697,702,706,710,714,718,723],{"type":16,"tag":62,"props":586,"children":587},{"style":69},[588],{"type":21,"value":589},"    \"",{"type":16,"tag":62,"props":591,"children":592},{"style":207},[593],{"type":21,"value":594},"MB。 Peak Memory: ",{"type":16,"tag":62,"props":596,"children":597},{"style":69},[598],{"type":21,"value":204},{"type":16,"tag":62,"props":600,"children":601},{"style":69},[602],{"type":21,"value":525},{"type":16,"tag":62,"props":604,"children":605},{"style":69},[606],{"type":21,"value":607}," ($",{"type":16,"tag":62,"props":609,"children":610},{"style":75},[611],{"type":21,"value":457},{"type":16,"tag":62,"props":613,"children":614},{"style":69},[615],{"type":21,"value":616},"/",{"type":16,"tag":62,"props":618,"children":619},{"style":560},[620],{"type":21,"value":563},{"type":16,"tag":62,"props":622,"children":623},{"style":69},[624],{"type":21,"value":557},{"type":16,"tag":62,"props":626,"children":627},{"style":560},[628],{"type":21,"value":563},{"type":16,"tag":62,"props":630,"children":631},{"style":69},[632],{"type":21,"value":552},{"type":16,"tag":62,"props":634,"children":635},{"style":69},[636],{"type":21,"value":525},{"type":16,"tag":62,"props":638,"children":639},{"style":69},[640],{"type":21,"value":641}," \"",{"type":16,"tag":62,"props":643,"children":644},{"style":207},[645],{"type":21,"value":646},"MB。 CPU: ",{"type":16,"tag":62,"props":648,"children":649},{"style":69},[650],{"type":21,"value":204},{"type":16,"tag":62,"props":652,"children":653},{"style":69},[654],{"type":21,"value":525},{"type":16,"tag":62,"props":656,"children":657},{"style":69},[658],{"type":21,"value":530},{"type":16,"tag":62,"props":660,"children":661},{"style":75},[662],{"type":21,"value":663},"cpuEnd",{"type":16,"tag":62,"props":665,"children":666},{"style":69},[667],{"type":21,"value":668},"[",{"type":16,"tag":62,"props":670,"children":671},{"style":69},[672],{"type":21,"value":673},"'",{"type":16,"tag":62,"props":675,"children":676},{"style":207},[677],{"type":21,"value":678},"ru_utime.tv_sec",{"type":16,"tag":62,"props":680,"children":681},{"style":69},[682],{"type":21,"value":673},{"type":16,"tag":62,"props":684,"children":685},{"style":69},[686],{"type":21,"value":687},"]",{"type":16,"tag":62,"props":689,"children":690},{"style":69},[691],{"type":21,"value":692}," -",{"type":16,"tag":62,"props":694,"children":695},{"style":69},[696],{"type":21,"value":151},{"type":16,"tag":62,"props":698,"children":699},{"style":75},[700],{"type":21,"value":701},"cpuStart",{"type":16,"tag":62,"props":703,"children":704},{"style":69},[705],{"type":21,"value":668},{"type":16,"tag":62,"props":707,"children":708},{"style":69},[709],{"type":21,"value":673},{"type":16,"tag":62,"props":711,"children":712},{"style":207},[713],{"type":21,"value":678},{"type":16,"tag":62,"props":715,"children":716},{"style":69},[717],{"type":21,"value":673},{"type":16,"tag":62,"props":719,"children":720},{"style":69},[721],{"type":21,"value":722},"])",{"type":16,"tag":62,"props":724,"children":725},{"style":69},[726],{"type":21,"value":727}," +\n",{"type":16,"tag":62,"props":729,"children":731},{"class":64,"line":730},9,[732,737,741,745,749,754,758,762,766,770,774,778,782,786,790,794,798,803],{"type":16,"tag":62,"props":733,"children":734},{"style":69},[735],{"type":21,"value":736},"        ($",{"type":16,"tag":62,"props":738,"children":739},{"style":75},[740],{"type":21,"value":663},{"type":16,"tag":62,"props":742,"children":743},{"style":69},[744],{"type":21,"value":668},{"type":16,"tag":62,"props":746,"children":747},{"style":69},[748],{"type":21,"value":673},{"type":16,"tag":62,"props":750,"children":751},{"style":207},[752],{"type":21,"value":753},"ru_utime.tv_usec",{"type":16,"tag":62,"props":755,"children":756},{"style":69},[757],{"type":21,"value":673},{"type":16,"tag":62,"props":759,"children":760},{"style":69},[761],{"type":21,"value":687},{"type":16,"tag":62,"props":763,"children":764},{"style":69},[765],{"type":21,"value":692},{"type":16,"tag":62,"props":767,"children":768},{"style":69},[769],{"type":21,"value":151},{"type":16,"tag":62,"props":771,"children":772},{"style":75},[773],{"type":21,"value":701},{"type":16,"tag":62,"props":775,"children":776},{"style":69},[777],{"type":21,"value":668},{"type":16,"tag":62,"props":779,"children":780},{"style":69},[781],{"type":21,"value":673},{"type":16,"tag":62,"props":783,"children":784},{"style":207},[785],{"type":21,"value":753},{"type":16,"tag":62,"props":787,"children":788},{"style":69},[789],{"type":21,"value":673},{"type":16,"tag":62,"props":791,"children":792},{"style":69},[793],{"type":21,"value":722},{"type":16,"tag":62,"props":795,"children":796},{"style":69},[797],{"type":21,"value":557},{"type":16,"tag":62,"props":799,"children":800},{"style":560},[801],{"type":21,"value":802}," 1000000",{"type":16,"tag":62,"props":804,"children":805},{"style":69},[806],{"type":21,"value":807},"));\n",{"type":16,"tag":809,"props":810,"children":811},"style",{},[812],{"type":21,"value":813},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":97,"depth":97,"links":815},[816,817,818,819],{"id":25,"depth":97,"text":25},{"id":48,"depth":97,"text":48},{"id":231,"depth":97,"text":234},{"id":349,"depth":97,"text":352},"markdown","content:article:coding:simple-debug-in-laravel.md","content","article/coding/simple-debug-in-laravel.md","article/coding/simple-debug-in-laravel","md",1766375573987]