如何處理 PHP 中的錯誤

每位程式設計師都會犯錯。畢竟,我們都是人類。 可能會忘記加上分號,使用錯誤的變數名稱,或者傳遞錯誤的引數給函式。 在 PHP 中有三種主要的錯誤類型: 警告:這些是較輕微的錯誤,不會停止程式的執行。PHP 會輸出一個訊息,然後繼續執行。 注意事項:與警告類似,注意事項也不會停止程式的執行,而只是輸出一個訊息。 錯誤:錯誤會終止程式的執行,並輸出一個告訴你錯誤原因的訊息。 錯誤訊息在哪裡輸出呢?這取決於你的設定。 在開發模式中,將 PHP 的錯誤直接記錄到網頁中很常見,同時也記錄在錯誤日誌中。你希望能夠盡早看到這些錯誤,以便修正它們。 然而,在正式部署環境中,你不希望在網頁中顯示這些錯誤,但你仍然想要知道它們。因此,你需要將它們記錄到錯誤日誌中。 這些設定都在 PHP 的設定檔中決定。 如果你還不熟悉這些,沒關係,你的伺服器配置中有一個檔案決定了 PHP 的運行方式,它就是 php.ini。 php.ini 的確切位置取決於你的設定。要找出自己的設定,最簡單的方法是將以下程式碼添加到一個 PHP 檔案中,然後在瀏覽器中執行它: <?php phpinfo(); ?> 然後你將在 “Loaded Configuration File” 下方看到檔案位置: 在我的例子中是 /Applications/MAMP/bin/php/php8.1.0/conf/php.ini。 注意:phpinfo() 生成的資訊包含了許多其他有用的資訊,記得查看它們。 使用 MAMP,你可以打開 MAMP 應用程式資料夾,然後打開 bin/php,進入你所使用的 PHP 版本(例如我的是 8.1.0),然後進入 conf。在那裡你會找到 php.ini 檔案: 打開這個檔案,裡面有一長串的設定,並提供了對每個設定的詳細解釋。 我們對 display_errors 非常感興趣: 在正式部署環境中,希望設置它的值為 Off,如上方的文件所說。 這將使得錯誤不會再顯示在網頁上,但你仍然可以在這個案例中的 MAMP 的 logs 資料夾中的 php_error.log 檔案中看到它們: 這個檔案的位置取決於你的配置方式。 你可以使用 error_log() 函式將額外的資訊加入錯誤日誌: error_log('test'); 通常會使用錯誤記錄服務(例如 Monolog)來處理錯誤。

將 var_dump 的結果輸出到 error_log 中

以下是我在 PHP 調試中常用的一段程式碼。 我想要將值使用 error_log() 印出到 error log 中,但是它只接受字串作為輸入。 因此,我使用以下程式碼片段將 var_dump() 的結果印出: ob_start(); var_dump($something); $contents = ob_get_contents(); ob_end_clean(); error_log($contents);

异步 vs 同步代码

运行代码同步或异步的区别 您可能听说过Node.js之所以快是因为它为所有昂贵的操作(如网络访问或文件系统)提供了异步API。 拥有异步API意味着什么呢? 如果你预计某个操作可能需要很长时间,那么以异步方式运行它是有意义的,这样其他代码可以同时运行,并且在操作结束时有一个钩子被调用。 这就是为什么Node.js可以处理比PHP或Rails更多的流量而不使用异步库的原因。 大多数传统上不是异步的编程语言现在都有第三方库来实现调用异步代码的方式。 否则,例如在PHP或Python代码中通常会发生的情况是,线程会阻塞,直到同步操作(从网络读取、写入文件等)结束。 如果代码以异步方式运行,CPU不会空闲等待该进程完成,而是可以继续执行其他已排队的任务,直到原始进程准备好继续进行为止。

部署 PHP 應用程式

當你有一個準備好的應用程式時,就該部署它並讓它可以從網上任何地方存取! PHP 是在網上部署方面,擁有最佳成敗故事的程式語言。 相信我,其他每一種程式語言和生態系統都希望自己和 PHP 一樣容易。 PHP 的優點、它準確理解並允許取得這令人難以置信的成功,是即時部署。 你把一個 PHP 檔案放在 Web 伺服器服務的資料夾中,它就能正常運作了。 不需要重新啟動伺服器,執行可執行檔,什麼都不需要。 這仍然是眾多人的做法。你以 3 美元每月租用一個共享主機,透過 FTP 上傳檔案,完成。 然而,如今我認為 Git 部署是每個專案都應該內建的東西,而共享主機應該過時了。 其中一種解決方案是始終擁有自己的私有 VPS(虛擬私有伺服器),你可以在 DigitalOcean 或 Linode 等服務中取得。 但是管理自己的 VPS 可不是開玩笑的,它需要嚴重的知識和時間投資,以及持續的維護。 你還可以使用所謂的 PaaS(平台即服務),這些平台專注於處理所有煩人的事情(伺服器管理),你只需上傳應用程式,它就運行起來。 像 DigitalOcean App Platform(不同於 DigitalOcean VPS)、Heroku 和許多其他平台均非常適合進行初步測試。 這些服務允許你連接 GitHub 帳號,每次將變更推送到你的 Git 儲存庫時都會部署。 參考 從零開始設定 Git 和 GitHub 這比 FTP 上傳更好的工作流程讓我們一起來做一個極簡的示例。 我建立了一個簡單的 PHP 應用程式,只有一個 index.php 檔案: <?php echo 'Hello!'; ?> 我在 GitHub Desktop 應用程式中添加了上層資料夾,初始化了一個 Git 倉庫並且將它推送到 GitHub: 現在請前往 digitalocean....