標籤: ci4

  • 用 ChatGPT 生成 Codeigniter4 Model Class

    用 ChatGPT 生成 Codeigniter4 Model Class

    走正向工程的話,規劃 DB 資料庫會遇到要轉成程式結構的問題,基本上沒有技術但是 Han 麻煩。這次嘗試用 ChatGPT 生成。

    使用 ChatGPT 4o 處理。

    目標:

    1. Mysql DDL File(.sql) 匯出 Create 指令,將其轉換為 CI4 的 Model Class 的程式碼。
    2. Model Class 繼承 BaseModel Class,BaseModel 是一個把一些基礎的操作和變數寫好的 Class ,繼承 CodeIgniter\Model 。
    3. 使用 ChatGPT 生成,儘量不要還得手動調整。

    附上提示詞連結:

    操作過程也紀錄一下:

    1. 一開始拿一個 table 的 create 指令生成,最終請它產生提示內容。
    2. 將 .sql 檔案匯出,確保都是 create 指令。
    3. 匯入 ChatGPT 並且使用提示提請它提供生成檔案 zip 連結。
    4. 下載確認與修正 loop:
      • 確保 MySQL 檔案中的備註有放到 PHP 裡面
      • 移除 fk 會填入欄位的問題
      • 移除 index 等 key 會重複填入欄位的問題
      • 移除驗證規則(這個 case 不需要)
      • 添加 Class 註釋,包含日期、作者、 MySQL 中於 table 的註解。

    匯出了好多檔案

    看這版本,有種提案給客戶的設計稿的感覺。屠龍者終成惡龍阿。

    補一個操作畫面:

  • PHP Codeigniter 4 框架速度優化

    會選擇 Codeigniter 有一個很大的需求是因為要能快速入手,簡單好用,從 3.x 個位數版本開始,現在推出 4 大改版,結構和其他框架也越來越像。

    最近修改一份無框架的專案程式碼,在不更改業務邏輯、資料庫結構的狀況下,移植到 ci4 上面以後才發現,速度變的奇慢無比。想到要追蹤 ci4 的執行速度,才發現 composer 下來的 core 還挺複雜的阿! 功能強大結果變慢,屠龍的少年,終將變成惡龍呀……。

    於是開始研究 Ci4 優化的方法,這邊記錄下來。

    在優化之前,以兩個檔案讀取作為指標。

    讀取名叫 init 的頁面 2.3 sec

    Ajax 讀取前端設定 JSON 資料 3.41 sec

    處理的動作

    • 在 app/Config/Modules.php 中,把 $enabled 和 $discoverInComposer 設定為 false ,參考文件。( init 頁面 828ms, ajax load settings json 2.11 sec)
    • 同一個檔案中,把 $aliases 設定為空集合。( init 頁面 761.82ms, ajax load settings json 1.8 sec)
    • 在 app/Config/Toolbar.php 中,把 $collectors 設定為空集合。在 app/Config/Events.php 中,有一段標記 ‵Debug Toolbar Listeners.‵ 的程式碼,刪除或註解起來。 ( init 頁面 640.70ms, ajax load settings json 1.54 sec)
    • 在 app/Config/Filters.php 中,預設有幾個 class 開啟,分別是:csrftoolbarhoneypotinvalidcharssecureheaders。這幾個有些是安全設定,自行確認檢查哪些要移除。
    • 檢查 app/Config/Autoload.php 裡面有哪些用不到的,儘量在只需要使用時才用。

    效果顯著。

    init 頁面從 2.3 秒到 683豪秒
    AJAX 讀取前端設定從 3.41 秒到 1.65 秒

    但是無框架的原始程式碼呼叫速度還是非常的快的。在相同資料庫、相同 php 運行環境的狀況下,速度是框架 3 倍以上。

    init 頁面 208.03 豪秒
    AJAX 讀取前端設定 354.94 豪秒

    這沒辦法比,革命尚未成功就是。