# E2EE 更新日志
----
## 測試版說明
使用前**請備份原始代碼**,新版(包括測試版)不保證功能完全向下兼容。
發現問題請及時**聯系群管理員或作者**,反饋具體問題。如果能夠復現,請提供復現代碼,以便能夠快速解決問題。
測試版僅用于**正式版發布前的測試,請不要在正式環境中使用**。
測試版通常編譯為**調試模式**,不會對代碼進行任何優化,**運行效率遠低于正式版**。
----
測試版使用說明
- 將 e2ee.fne 拷貝到 “[易語言]/lib” 目錄
- 備份要編輯的代碼
- 打開易語言編輯測試
- 發現問題反饋給群管理或作者
----
## 3.5
### 測試版 240117
- **格式編碼**
- URL編碼/URL解碼 加入了UTF-16/UTF-32的支持(感謝 太陽)。沒錯,又重構了一遍。
- **文本處理**
- 修復了 文本_批量替換_刪除索引() 函數返回類型定義錯誤(感謝 心亂)
- 修復了 傳入文本數組可能解析失敗導致奔潰的問題(感謝 心亂、Game)
- [原因] 使用了易語言解析字節集數組的方法,未轉換為文本數組導致類型匹配失敗
- 文本處理.文本_批量替換_從數組
- 文本處理.文本_批量替換_創建索引_從數組
- **網站服務器**
- 修復了 配置項 [提交參數尺寸] 單位(使用新技術后默認尺寸為 Byte,現已修復為 KB)(感謝 心亂)
- 原版本不修改此參數時,默認提交參數內容最大值限制為 1.6K。現在參數最大值為 1.6M長度。如果需要更大參數可修改此配置項。
- **EDBC**
- 修復了 取回錯誤() 方法定義。方法也將直接返回錯誤文本。
- 加入了 “@” 符號轉義支持。具體用法為不需要做為變量的“@”符號前加反斜杠“\@”。
- [例如] SELECT * FROM \@TB WHERE code = @code
- 只有 @code 為變量
- mysql
- 根據建議將識別JSON類型返回數據為文本型
- odbc
- 修復了 NULL 類型支持
- 修復了 參數化查詢或更新時文本參數可能失敗的問題(感謝 林夕)
- 重構了 錯誤處理等邏輯,錯誤原因更具體詳細
- **網站客戶端**
- 修復了多線程批量模式下,執行單請求訪問每次延時1秒的問題(感謝 神話)
- **鍵值表**
- 恢復了 消息數據() 文本到日期時間型的支持
### 測試版 240105
- **WebSocket服務器**
- 加入了 隨機端口啟動功能。
- **使用方法**
- 初始化() 端口設置為 0
- 啟動() 成功后使用 取端口() 獲取當前端口
- **鍵值表/列表**
- 修復了 到JSON() 只返回“true”的問題(感謝 林夕)
- 到JSON()
- 響應.寫出結果()
- 修復了 打開文本()/另存文件() 保存后的JSON可能轉文本的問題(感謝 心亂)
- **網站服務器**
- 修復了 取配置文本() 返回空的問題(感謝 IQ↑諸※葛※瑜§☆☆)
- **圖像處理**
- 修復了 保存數據() 時圖像不是24位時保存PNG/JPG會失敗的問題(感謝 心亂)
- 修復了 取原始數據() 時導出數據時序列化數值為文本導致的數據出錯問題
### 測試版 240101
- *Release date 2023/12/31*
- **國際化**
- 加入了 國際化多語言支持。
- [**代碼中使用**]
- 請求.取語言名/置語言名/取語言列表/取語言值
- [**模板中使用**]
- {{ 取語言名/置語言名/取語言列表/取語言值 }}
- 更多說明請查看E2EE的`多語言.md`文檔
- **寬文本**
- 重構了 寬文本處理,徹底解決生成或轉義導致的數據缺失等問題。
- **網站服務器**
- 優化了 上傳功能。將上傳讀取數據部分轉化為異步處理,避免線程阻塞節省線程和CPU資源。
- 加入了 重啟() 方法。
- 修復了 用戶續傳約定范圍為“[起始]-[結束]”時未定義[結束]導致范圍驗證失敗的問題。
- 修復了 配置文件更改時重啟可能失敗的問題。
- 重構了 跨域處理功能
- 加入了 訂閱視圖函數限定請求方法。
- [**規則**] "[" [方法名] ("|" [方法名])* "]" [請求地址]
- [**使用方法**] 在訂閱視圖函數的地址參數最左邊,加入中括號“[]”,內容為方法名(大寫),多個方法用“|”分割
- [**示例**] 服務器.訂閱視圖函數(&視圖, "[POST]/upload")
- [**示例**] 服務器.訂閱視圖函數(&視圖, "[GET|POST]/upload")
- [**示例**] 服務器.訂閱視圖函數(&視圖, "[OPTIONS]*")
- [**注意**] 當限定了請求方法時,其它請求方法將被當成404處理。
- [**注意**] 同一個地址允許多方法不同函數
- **鍵值表/列表**
- [**注意**]
- 升級了 序列化版本號。
- 3.4版本以前的支持庫不能讀取新生成的數據格式
- [**相關命令**]
- 到字節集()
- 到Base64()
- Memcache/Redis/RabbitMQ 等生成的鍵值表/列表導出的字節集數據
- 新的支持庫能夠兼容讀取舊版數據。
- 無法正確讀取3.3.7~3.3.9版本支持庫生成的時間類型數據,讀取后可能為空時間。
- JSON
- 修復了 雙精度/數值長度超過64位時可能奔潰(感謝 這個嘛)。
- 修復了 對象類型 讀取時意外字符導致的奔潰(感謝 Stately)。此功能會影響 JWT內容修改或JSON亂碼導致的奔潰。
- 修復了 取時間() 返回的時間跟易語言相同時間對比可能為假的問題(感謝 8680088、XGSoft)。
- 修復了 錯誤使用鍵值表/列表相反的表達式時(譬如用鍵值表的表達式置值列表對象),可能導致原始對象被對象池錯誤回收后被再次分配導致同對象多存在的問題(感謝 葒楓)
- 修復了 排序() 方法指定排序方式為 按整數/小數排序 時,數據類型為 [日期時間型] 結果可能不準確的問題。
- **定時任務**
- 修復了 時間或月份變化時,可能任務無效或者每秒重復執行的問題(感謝 Testme)。
- **通用連接池**
- 修復了 初始化() 時,最小閑置數和最大連接數的驗證邏輯,可能導致的連接數鎖定32個的BUG(感謝 葒楓)。
- **WebSocket服務器**
- 加入了 手動指定SSL方法/版本(ssl_method)
- 修復了 綁定私有證書可能失敗的問題
- 加入了 HTTP協議升級請求處理函數
- 加入了 取請求信息 方法。可以獲取 URI、請求頭、請求內容信息。
- 加入了 置響應頭/追加響應頭/置響應狀態/置響應內容 方法。
- 加入了 置HTTP函數() 方法。可以指定HTTP處理函數。
- 加入了 自定義SSL協議配置項支持。
- [**使用方法**]
- 在 初始化_WSS() 方法中指定 SSL選項 參數。
- 加入了 PONG超時處理函數
- 加入了 置PONG超時() 方法,可以指定 PONG超時時間 和 PONG超時事件 參數。
- 修復了 SSL環境下無法收到 PONG 消息的問題。
- **WebSocket客戶端**
- 修復了 使用代理連接時阻塞的問題。
- 修復了 連接有效的“wss://”時可能握手失敗的問題
- 加入了 手動指定SSL方法/版本(ssl_method)
- 加入了 綁定私有證書功能
- 在初始化后調用 初始化_SSL()
- 加入了 HTTP處理方法
- 加入了 置請求內容() 方法。可以指定升級HTTP請求協議時提交的內容。
- 加入了 取響應信息() 方法。可以獲取HTTP升級請求中攜帶的URI、原始響應頭 和 響應內容。
- [**使用方法**]
- 在 初始化()/初始化_標識() 方法中指定 HTTP處理函數。
- 加入了 PONG超時處理函數
- [**使用方法**]
- 在 初始化()/初始化_標識() 方法中指定 PONG超時時間 和 PONG超時事件 參數。
- **高級查詢器**
- 修復了 內存泄露的問題
- 修復了 當表達式為 SELECT 函數(xxx) AS $self 等場景時可能會漏掉函數執行的問題
- **加解密對象**
- 修復了 加密數據GCM 時[附加驗證數據]只能為整數的問題(感謝 Ahfbwox)。
- **格式編碼**
- 修復了 HEX解碼時包含空格或其它內容無法準確解析的問題。
- **服務器輔助**
- 加入了 取圖像文件尺寸() 方法。通過提取圖像二進制數據,快速提取常用圖像格式的寬高尺寸信息。支持 JPG/GIF/PNG/BMP 格式
- **模板**
- 加入了 新的“又如”語法:
```
{{?條件 == 1}}
我是條件1
{{!?條件 == 2}}
我是條件2
{{!否則}}
我是其它條件
{{/條件}}
```
- 否則也可以用 {{!}} 代替 {{!否則}}
- **數據驗證器**
- 重構驗證引擎全面支持寬文本
- 正則表達式全面兼容UTF-8
- 所有 “漢字”驗證項支持所有語言內容(排除所有標點符號僅保留每種語言的文本部分)。驗證集合自動采集于最新UNICODE碼表。
- **圖像處理**
- 重寫了 保存數據() 方法。使用 png/jpg/bmp 原始算法導出數據到通用流。
- 加入了 取原始數據()/置原始數據() 方法。能夠獲取圖像原始數據和從原始數據創建圖像。
- **EDBC**
- 修復了 查詢時有參數的情況下,空文本返回為 NULL 的問題(感謝 山川)。
- [**mysql**]
- 全類型映射修復(感謝 葒楓 等)。新的驅動能夠準確匹配類型。
- **邏輯型**: BIT(1)
- **整數型**: TINYINT / SMALLINT / MEDIUMINT / INT / BIT / YEAR
- **長整數型**: BIGINT
- **雙精度小數**: FLOAT / DOUBLE / DECIMAL
- **文本型**: CHAR / VARCHAR / TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT / TIME / ENUM / SET / JSON
- **字節集**: BINARY / VARBINARY / TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB / POINT / LINESTRING / POLYGON / GEOMETRY / MULTIPOINT / MULTILINESTRING / MULTIPOLYGON / GEOMETRYCOLLECTION / JSON
- **日期時間型**: DATE / DATETIME / TIMESTAMP
- **JSON處理**
- 加入了 JSON處理 對象。可用于快速解析和寫出JSON。
- **示例**
- 優化 904 多語言
- 加入 905 WebSocket工具
- 加入 702 通用緩存對象示例/Memcache多線程端口測試.e
## 3.3.9
- **定時任務**
- 修復了 定時任務奔潰的問題
## 3.3.8
*Release date 2022/05/04*
- **定時任務**
- 修復了 取回數據 時轉換時間失敗的問題
- 修復了 修改系統時間小于原時間可能不會觸發任務的問題
- 修復了 月份變化時可能任務失效的問題(感謝 Testme)
- **通用線程池**
- 修復了 取回數據 時轉換時間失敗的問題
## 3.3.7
*Release date 2022/04/27*
- 修復了易語言時間(OleDateTime)轉換到E2EE時間可能損失精度的問題(感謝 銀河世紀、這個嘛)
- 修復了獲取時間為空值時會被設置為當前時間的問題
- **鍵值表/列表**
- 修復了 創建/賦值 為時間類型時可能失敗的問題
- **高級查詢器**
- 加入了以“[]”開頭的變量尋址方式(感謝 織夢)。例如:WHERE ['my name'] = 'JimStone',從當前鍵值表獲取主鍵“my name”對應的值
## 3.3.6
*Release date 2022/04/26*
- 趁著疫情封城還沒被傳染趕緊發新版
- **靜態編譯**
- 修復了在DLL中使用E2EE靜態編譯時,調用某些函數可能無法加載(E2EE)的問題(感謝 這個嘛)
- **網站客戶端**
- 上傳功能的“Content-Type”加入了使用內部MIME的支持
- **模板引擎**
- 修復了文件內容為空顯示“未知錯誤”的問題
- 加入了文件不存在時的錯誤提示
## 3.3.5
*Release date 2022/04/20*
- **存取鍵值表/存取列表**
- 修復了 到Base64 無效的問題(感謝 Dcdc)
- 去除了 內存池線程分配機制用于適配自我管理線程數據的情況
- **文本處理**
- 修復了 文本_批量替換_從索引 可能失敗的問題(感謝 這個嘛)
- 原索引指針內存被重置引起的
- **存取列表**
- 修復了類型轉換函數 int/double/string/datetime(感謝 織夢)
- 修復了 排序() 中的文本排序(感謝 織夢)
- **高級查詢器**
- 修復了類型轉換函數 int/double/string/datetime。
- **通用連接池**
- 加入了 初始化() 方法。可以設定連接數等參數
- 修復了連接超過閑置數量時可能無法釋放的問題(感謝 Lion)
- **ADODB數據庫連接**
- 修復了 查詢可能導致內存溢出的問題(感謝 Lion)
- **模板引擎**
- 修復了 文本變量減乘除處理結果永遠為0的問題(感謝 Why何)
## 3.3.4
*Release date 2022/04/09*
- **通用線程池**
- 修復了 守護線程啟動失敗導致線程池始終最小線程數運行的情況(感謝 網絡魔法)
- **存取查詢器**
- 加入了 NULL 關鍵字支持。可以用于條件判斷和數據返回等
- **網站客戶端**
- 修復了多線程請求可能產生訪問沖突的問題(感謝 織夢)
## 3.3.3
*Release date 2022/04/08*
- **共享參數**
- 加入了 取所有參數_到列表() 方法。可以取回所有參數到[存取列表]對象
- **網站服務器**
- 修復了 服務器關閉可能阻塞的問題(感謝 風聲)
- 對象池釋放無法繼續回收對象導致阻塞
- **消息發布中心**
- 修復了 多窗口應用訂閱標簽消息時可能阻塞的問題(感謝 網絡魔法)
## 3.3.2
*Release date 2022/04/08*
- 重構了靜態庫方案
- 針對 個人版 和 會員版 進行了區分
- 優化了支持庫釋放和加載流程
- 加載低版本支持庫無法執行新增功能時會顯示提示
- **網站服務器**
- 添加了 添加更新檢測文件() 方法。
- 添加有效的文件(絕對)路徑,網站服務器會監測文件狀態,如果文件被修改過則服務器會自動重啟。此方法非線程安全,請在“網站初始化”函數中使用
- 修復了 網站停止或重啟時可能阻塞的問題(感謝 風聲)
- **文本過濾器**
- 修復了被替換為空文本時無法替換成功的問題
- **模板編輯器**
- 修復了 請求.屬性表() 中的變量在編輯器中缺失的問題
- 修復了 模板編輯器中執行SQL成功時無法返回結果的問題
- **存取列表**
- 修復了 從CSV載入2() 方法
- 修復了 指定列表頭可能導致奔潰的問題
- 加入了 Linux版本換行符 “\n” 的支持(原版本僅支持“\r\n”)
- **高級查詢器**
- 修復了 AND / OR 卡死的問題(感謝 銀河世紀)
- 編譯語句時使用了錯誤的索引
- **存取查詢器**
- 為了更好的維護現有功能,內部整合升級到[高級查詢器]
- 所有[存取查詢器]功能保留,用法和原來一致(不用修改現有代碼)
- 語法向[高級查詢器]靠攏
## 3.3.1
*Release date 2022/02/28*
- **JWT對象**
- 修復了 接收者存在內容時可能奔潰的問題(感謝 銀河世紀)
## 3.3.0
*Release date 2022/02/28*
- 加入了JWT支持
- **JWT對象**
- 支持全類型算法支持
- 支持簽名驗證和時間驗證
- **JWT算法類型**
- 算法枚舉類型
- **JWT解析結果**
- 解析和驗簽結果枚舉類型
- 用于定位解析或驗證失敗原因
- **常量**
- “JWT算法名稱_” 算法名稱常量
- “JWT主鍵_” 默認主鍵名稱常量
- **示例** 索引: 73
- JWT測試工具
- JWT示例
- **Redis**
- 執行結果為非文本時可自動轉換為文本(感謝 大小魚)
## 3.2.1
*Release date 2022/02/23*
- **網站客戶端**
- 修復了 使用客戶端后程序結束時有延遲或奔潰的問題(感謝 風聲)。
- **EDBC**
- mysql.edbc
- 修復了 無參數執行時更新行數無效的問題。
- **EDBC/ADO**
- 修復了 保存對象無法回寫ID的問題。
- **高級查詢器**
- 修復了 組裝結果為多級別鍵值表時可能奔潰的問題(感謝 小新)。
## 3.2.0
*Release date 2022/02/17*
- 重構了整個框架的時間處理機制。所有功能的時間不再受到 1970 年開始的時間限制
- 關聯方法:
- **存取對象**
- 取時間
- 到JSON
- 到文本
- **ADO/EDBC**
- 相關時間賦值和取值方法
- **格式編碼**
- 創建時間從文本
- 創建文本從時間
- 創建文本從時間2
- 加入 [共享函數] 功能(具體參考【902 JimStoneCMS】項目)。
- 新增 [共享作用域] 對象。用于在共享函數中獲取函數相關參數。
- 參考 示例/902 JimStoneCMS
- 關于[共享函數]
- 實現多模塊間的函數互相調用
- 能夠在模板函數中直接調用
- 未來公開接口后可實現微服務或遠程RPC
- 使用[共享函數]
- 定義
- 網站.訂閱共享函數()
- 創建共享函數()。用于定義函數說明
- 創建共享參數()。用于定義函數參數
- 使用
- 創建返回結果()。在共享函數中用于創建返回結果
- 網站.取共享函數列表()。獲取所有共享函數信息
- 請求.執行共享函數()/執行共享函數_列表參數()。執行共享函數
- 共享作用域.取回服務器對象()。在共享函數中取回相關服務器對象
- 共享作用域.取參數()/取所有參數()。在共享函數中獲取函數參數
- 加入 [寬文本型] 對象。此類型支持已經加入到E2EE各個對象中
- 對象映射功能中請不要設置 寬文本型。具體等待后期的控制中心對象生成功能的支持
- 寬文本型 對象已經并入到E2EE大部分功能之中。新功能歡迎反饋問題。
- 加入 插件機制。
- 建立了 E2EE API 機制,可用于未來的多語言擴展。
- 加入了 brotli 壓縮插件。
- 插件名稱:e2ee.brotli.plugin.dll
- 插件使用方法:
- 拷貝插件到程序目錄下即支持插件功能
- 修復了在易語言選擇支持庫可能導致奔潰的問題
- **模板**
- 重新加入了 快速SQL(QSQL) 功能的支持
- 加入了 多行代碼支持。
- 修復了 [文件列表頁] 等狀態擴展頁面的支持
- 修復了 變量名稱識別問題。中文等多字節文本可準確識別長度
- 修復了 快速SQL變量中包含“@”從而可能導致包含文件失敗的問題
- 修復了 “!”取反運算
- 修復了 “!=”運算
- 修復了 寬文本和文本 比較運算可能失敗的問題
- 修復了 作用域緩存問題。避免同作用域產生值緩存導致多次循環產生相同結果
- **網站請求**
- 加入 取參數到變量() 方法。取回參數并轉換到指定類型
- 加入 取回JSON() 方法。當“請求內容”類型為“JSON”時,取回JSON數據到變量
- **EDBC**
- 修復了 MySQL 驅動。
- 修復了保存時間無法保留時間部分的問題。
- **JSON**
- 修復了 小數輸出可能丟失 0 和之后內容的問題(感謝 心亂)。
- **高級查詢器**
- 修復了 文本比較可能無效的問題。
- **網站客戶端**
- POST/PUT
- 加入了 [請求方法] 參數。可以手動指定提交方法
- **路徑處理**
- 加入 取文件列表/取所有文件 方法的多級別后綴支持。
- 后綴:.a.b.c
## 3.1.0
*Release date 2022/01/24*
- 加入了全新的 [高級查詢器](JsonQ2) 功能。
- 助力E2EE更快進入Linq時代
- 語法靈活功能強大更加適合未來的需求
- **高級查詢器**
- 支持SQL標準的大部分單表語法(GROUP BY / ORDER BY / HAVING / MAX / MIN / SUM / AVG / BETWEEN / LIKE / IN)
- 編譯查詢效率高
- 基于E2EE數據特性開發可自由定義數據來源位置
- 豐富的函數支持
- 可以定制任意結構類型用做數據采集
- **存取列表**
- 加入了 高級查詢() 功能。對應快速應用 高級查詢器 功能。
## 3.0.7
*Release date 2022/01/18*
- **數據庫**
- 重構了參數化SQL解析算法(感謝 銀河世紀)。
- 修復了可能存在的動態參數無法正確解析,從而導致參數綁定失敗的問題。
## 3.0.6
*Release date 2022/01/12*
- **模板**
- 修復了變量中包含數字可能導致渲染失敗的問題(感謝 風聲)
- **存取列表**
- 加入了倒序功能。具體使用在“排序()”方法中[排序方式]參數指定為“#存取排序方式_倒序”
- 加入了 置換添加鍵值表/置換添加列表 方法
- 相比 添加鍵值表/添加列表 功能效率更高,實現原理是直接內存替換。
- 調用成功后原鍵值表/列表內容會被清空
## 3.0.5
*Release date 2022/01/12*
- **過濾器**
- 修復了匹配時越界導致的奔潰問題(感謝 織夢)
## 3.0.4
*Release date 2022/01/11*
- **鍵值表/列表**
- 修復了無法正確解析UNICODE文本的問題(感謝 原子)
- **ADO/EDBC**
- 修復了動態參數解析的問題(感謝 銀河世紀)
- 原版本符號連接“@”時無法識別為變量("UPDATE money=@money, name = @name",其中 @前是=,符號連接無法解析)。
## 3.0.3
*Release date 2021/12/29*
- **文本過濾器**
- 重構了文本過濾器
- 使用全新的索引匹配算法
- 內存占用極低。幾十萬上百萬的長語句做為替換關鍵字也不會導致內存bomb
- 替換效率高效。實測單線程每秒替換25MB~30MB,CPU占用較低。
- 索引創建效率更高
- 加入了“創建按參數_從列表”方法。
- 可配合 存取列表 的 從文本分割 方法。能實現只占用少量內存且效率更高的,實現加載文件、分割 并且 創建替換索引的處理過程。
- 實測使用原始方法加載10萬長詞條文件(5MB),載入內存并分割文本就占用300MB+內存。而使用存取列表分割內存占用僅10MB。
## 3.0.2
*Release date 2021/12/27*
- 修復了模板編輯器預覽路徑無參數的問題
- 修復了EDBC驅動讀取數據時可能時間轉換失敗的問題
- 加入了時間兼容模式。時間越界時將使用文本存儲時間信息
- **模板引擎**
- 修復了模板引擎渲染或“||”操作時可能無法獲取結果的問題(感謝 銀河世紀)
- 加入了 包含文件() 函數。支持動態加載模板文件
## 3.0.0
*Release date 2021/12/25*
- 加入了EDBC通用數據庫驅動引擎
- 加入了[通用連接池]對象。目前支持的對象:
- EDBC連接
- Redis同步客戶端
- 加入了最新的模板引擎
- 全語法支持
- 函數支持更全
- 支持JSON定義
- 支持更加完善的自定義函數支持
- 注意:原判斷語句“=”更改為賦值操作,相等判斷請使用“==”(感謝 銀河世紀)
## 2.9.0
- 重構了存取對象(列表/鍵值表)部分功能
- 文本相關方法
- 字節集賦值回收
- 加入了新的內存池技術。內存數據處理效率更高
- 修復了Redis相關的問題
## 2.8.16
*Release date 2021/07/02*
- 修復了會員系統驗證算法(升級openssl導致)
- 小數文本加入了科學計數法支持
- 針對JSON和可用科學計數法描述的文本輸入輸出
- **網站響應**
- 修復了 寫出成功/寫出失敗。使生成的JSON內容支持寬文本。
- **加解密對象**
- 恢復了 DSS1 算法支持(升級openssl導致)
- 修改了 新的 加/解密數據 方法名稱為 加/解密數據2
- 恢復了 加/解密數據 方法為原始方法
- **存取鍵值表**
- 更換JSON引擎為新版引擎(感謝 諸葛瑜、織夢)
- 優化了 從網絡載入() 方法 (感謝 小秋秋)
- 可以指定【請求方法】參數,如果此參數為空,為空或空文本,則根據是否指定【發送數據】參數,來決定使用“POST”或“GET”
- **存取列表**
- 更換JSON引擎為新版引擎
- 優化了 從網絡載入() 方法 (感謝 小秋秋)
- 可以指定【請求方法】參數,如果此參數為空,為空或空文本,則根據是否指定【發送數據】參數,來決定使用“POST”或“GET”
- **網站客戶端**
- 修復了 取響應頭() 方法執行時, 同名稱響應頭(例如:Set-Cookie)只包含第一條數據的問題
- **定時任務**
- 重構了 定時預測算法。定時任務規則將更加嚴謹。
- 修復了 刪除任務 方法可能導致奔潰的問題(感謝 銀河世紀)
## 2.8.15.1
*Release date 2021/03/28*
- **加解密對象**
- 修復了 無填充 模式下解密的兼容性。
## 2.8.15
*Release date 2021/03/28*
- **網站客戶端**
- 修復了自動跳轉請求頭數據處理過程中的一個溢出問題(感謝 銀河世紀)。
- **存取鍵值表**
- 修復了 從XML載入() 載入CDATA失敗的問題(感謝 風中淚)。
- **XML對象**
- 修復了 載入CDATA失敗的問題(感謝 風中淚)。
- **WebSocket客戶端**
- 加入了 SSL/TLS 混合協議的支持(感謝 逍遙一仙、中國語言)。
- **加解密對象**
- 修復了 無填充 模式下加密可能失敗的問題(感謝 Aow)。
## 2.8.14
- 修復了會員證書處理。
[網站服務器]
- 加入了 // 開頭的地址兼容性。
## 2.8.13
*Release date 2021/03/16*
- **網站服務器**
- **防火墻**
- 修復了 網站黑名單 在 keepalive 下無法準確驗證訪問次數的問題。
- **鍵值表**
- 修復了 從文件載入(, 3) CSV格式讀取請求頭可能亂碼的問題(感謝 銀河世紀)
- **WebSocket服務器**
- 修復了 PING/PONG 發送部分的支持(感謝 銀河世紀)。
- **WebSocket客戶端**
- 修復了 PING/PONG 發送部分的支持。
- **正則表達式**
- 加入了 UTF-8 表達式匹配的支持。
## 2.8.12
*Release date 2021/03/15*
- **網站服務器**
- 優化了 部分網絡處理機制(IO服務)。
- 修復了 動態緩存設置被重寫導致服務器自動重啟的問題。
- **對象映射中心**
- 修復了 從JSON配置的問題。
- 由于未清空數據,導致多次加載JSON配置重復加載已有對象,運行時由于內存的多余信息,導致內存方法溢出奔潰。
## 2.8.11
*Release date 2021/03/14*
- **網站服務器**
- 修復了 未調用 初始化() 直接啟動服務器時SSL可能失敗的問題(感謝 1250509394)。
- **數據庫**
- 修復了 取連接() 方法可能導致線程奔潰的問題(感謝 銀河世紀)。
- 此方法可能導致本次連接阻塞不返回數據
- **格式編碼**
- 修復了 創建文本() 重新加入了雙飄號“··”的支持(感謝 神話、第三只眼)。
- **網站客戶端**
- 修復了 取響應頭文本() / 取響應狀態文本() 方法。在不訪問內容的情況下,直接調用可能獲取無效內存。
- **定時任務**
- 添加了 刪除() 方法。可以根據任務名稱刪除。
- 加入了 暫停() 方法。
- 加入了 繼續() 方法。
- **線程池**
- 加入了 取任務名稱() 方法。可以獲取任務的名稱(如果有綁定)。定時任務可以取回任務名稱。
- 加入了 綁定函數名稱() 方法。可以綁定函數默認名稱。
- 方法 投遞任務() 加入了【任務名稱】參數。可以綁定任務名稱。
## 2.8.10
*Release date 2021/03/12*
- 修復了會員版授權失敗的問題。
- 加入對象 [CRC校驗]
- **存取列表**
- 加入了 統計() 方法。相關函數:
- “COUNT”取行數
- “SUM”求和
- “AVG”取平均值
- “MAX”取最大值
- “MIN”取最小值
- **通用緩存對象**
- **Memcache**
- 修復了 分布式 模式下【調試模式】時初始化程序奔潰的問題。
- 優化了 計次加/計次減 失敗時的處理。失敗時返回 -1。
- **格式編碼**
- 加入方法 創建CRC()
## 2.8.9
*Release date 2021/03/11*
- **網站服務器**
- 修復了“驗證器.json”等JSON文件加載失敗的問題(感謝 神話)
- **XML對象**
- 修復了部分XML加載失敗的問題
- **存取鍵值表**
- 修復了 從XML載入() 部分文件加載失敗的問題。
- **數據庫**
- 加入了 TinyInt 等有符號短整數支持。
- **存取查詢器**
- 加入了 寬文本 LIKE 等支持(感謝 修止符)。
- “寬文本”類型需要編碼轉換,存在編碼轉換的效率損耗,大量數據用寬文本類型字段查詢時,建議改用 查找() 等方法。
## 2.8.8
*Release date 2021/03/07*
### 加解密對象重構后解密將嚴格按照padding填充方式等設置進行解密正確性校驗。
- **存取鍵值表**
- 加入到 到表單數據() 方法(感謝 葒楓)。功能和 到表單文本 唯一的不同是返回數據類型為字節集。
- **加解密對象**
- 修復了加解密可能內存溢出的問題。
## 2.8.7
*Release date 2021/03/06*
- **XML對象**
- 修復了某些數據載入失敗的問題(感謝 銀河世紀)
- **存取鍵值表**
- 修復了某些數據載入失敗的問題(感謝 銀河世紀)
## 2.8.6
- 升級 OpenSSL 到 1.1.1i 版本(支持TLS1.3)
- **網站服務器**
- 修復了 同時上傳文件時可能產生相同文件名的問題(感謝 林夕)
- **WebSocket服務器**
- 加入了 初始化() 的【線程數】參數。會員版可以設置處理任務的線程數量
- 加入了 WSS初始化() 的【加密套件】和【正向保密】參數。可以指定WSS時具體的加密套件
- 加入了 取所有請求頭() 方法
- **ADODB數據庫連接**
- 優化了 查詢/查詢頭條/執行 等方法時是否執行存儲過程的判斷邏輯(感謝 網絡魔法)。
- 當存在參數時,判斷SQL語句中是否存在“@”關鍵字來決定是否執行(傳參)存儲過程。
- **加解密對象**
- 加入了 GCM 加密支持,支持AEAD驗證。使用時需要指定AAD和Tag長度,請根據實際需求使用。
- 相關算法可使用“#算法_GCM_”開頭的常量指定
- 加入方法 加密數據GCM()
- 加入方法 解密數據GCM()
- 加入了 CCM 加密支持,支持AEAD驗證。使用時需要指定AAD和Tag長度,請根據實際需求使用。
- 相關算法可使用“#算法_CCM_”開頭的常量指定
- 加入方法 加密數據CCM()
- 加入方法 解密數據CCM()
- 加入了步進式 哈希值 提取方法
- 加入方法 開始哈希() 指定哈希算法
- 加入方法 更新哈希() 加入要提取哈希的數據(可以連續多次執行)
- 加入方法 完成哈希() 獲取哈希值結果
- 加入了步進式 HMAC值 獲取方法
- 加入方法 開始HMAC() 指定哈希算法和密碼
- 加入方法 更新HMAC() 加入要提取HMAC的數據(可以連續多次執行)
- 加入方法 完成HMAC() 獲取HMAC結果
- 加入了 CMAC 支持。
- 加入方法 取CMAC值()
- 加入方法 開始CMAC()
- 加入方法 更新CMAC()
- 加入方法 完成CMAC()
- 加入了 填充類型 ISO7816_4 的支持。
- 加解密算法時【填充類型】使用 “#填充方式_ISO7816_4” 常量
- 加入了 國密 SM2/SM3/SM4 的支持。
- 加入了以下相關常量:
- #哈希算法_SM3
- #算法_SM4_ECB
- #算法_SM4_CBC
- #算法_SM4_OFB
- #算法_SM4_CFB
- #算法_SM4_CFB1
- #算法_SM4_CFB8
- #算法_SM4_CTR
- 加入了 SM2 相關方法:
- 創建SM2密鑰對()
- 加密數據SM2()
- 解密數據SM2()
- 加入了方法 是否支持() 用于判斷是否支持指定的算法或哈希算法。
## 2.8.5.4
*Release date 2020/12/23*
- 修復了雙精度小數輸出文本和JSON的問題
## 2.8.5
*Release date 2020/12/22*
- 重要更新:修復了易語言底層內存處理機制導致E2EE程序奔潰的問題(感謝 龍鵬林(小蝸牛))。
- 此問題影響范圍很廣,重要體現是程序線程安全處理正常,但調用一些E2EE內的文本或數據處理在長期運行時,偶爾可能會奔潰。
- 修復后E2EE程序只要用戶做好必要的線程處理,除非是硬性BUG,否則不會奔潰。
- 加入了新的內存池技術。主要應用于鍵值表和列表多線程環境下相關的內存處理。
- 修復了GBK編碼范圍識別問題。將使用更規范的GBK編碼表(感謝 龍鵬林(小蝸牛))。
- **網站服務器**
- 加入了配置項自動重載功能。所有關聯配置項在網站運行時,如果配置內容產生變化將自動重新加載配置重啟服務器。
- **網站請求**
- 優化了JSON類型參數解析。非鍵值表類型的數據,數據將統一被寫入 請求.取所有參數() 下的“json”主鍵下。
- 修復了JSON類型參數接收為空的問題。
- **存取鍵值表**
- 加入了 從列表載入() 方法。可以將列表轉換為鍵值表或者給列表創建索引。
- 優化了 到表單文本() 方法。加入了【是否URL編碼】參數。可以指定是否對內容進行URL編碼處理
- **存取鍵值表/存取列表**
- 優化了 到文本() 方法。去除了所有的拷貝操作,使用新的流對象,效率更高。
- 優化了 文本格式存儲機制。文本數據將自動包含長度信息。
- 修復了 到字節集() 方法無法生成校驗碼和長度的問題。
- 修復了 從JSON載入/從XML載入() 等方法,在非GBK編碼時,解析數據和原編碼一致時可能解析失敗的問題。
- **網站客戶端**
- 加入了 全新的異步請求處理機制。
- 新的異步機制能確保客戶端在和服務器傳輸數據過程中,大部分時候將不占用任何多余CPU。
- 提高了網站客戶端的并發能力
- **圖像處理**
- 優化了圖像通道處理方式。所有圖像都使用統一4通道參與圖像處理運算。
- **格式文本**
- 優化了 創建文本() 方法。
- 加入了【名稱索引】的支持(感謝 龍鵬林)
- 創建文本(“我叫 {name}”,創建鍵值表(“name”, “JimStone”))。生成內容為“我叫 JimStone”
- 加入了內容輸出格式支持
- 創建文本(“金額:{1:D0.2}”, 1.211)。生成內容為 “金額 1.21”。其中“D0.2”指定為輸出2位小數
- 加入了 創建文本從時間2() 方法。
- 支持跟Java中的“SimpleDateFormat”類一致的使用方法。
## 2.8.3
*Release date 2020/10/12*
- 加入了 圖像處理 對象。
- 支持圖像格式 BMP/JPG/PNG
- 支持常用圖形圖像處理算法
- 支持用指定字體繪制中文
- **編碼處理**
- 加入了 文本編碼別名常量。別名常量格式為 [編碼]_編碼。常用編碼常量:
- GBK_編碼
- UTF8_編碼
- **網站服務器**
- 優化了 訂閱視圖函數 的標簽順序處理。視圖函數執行前,將按照標簽順序執行全局函數。
- **數據庫**
- 修復了 保存對象 方法時【是否自增】為 假 的關聯表無法保存的問題(感謝 葒楓、JimStone)。
- **網站響應**
- 加入了 渲染消息頁() 方法。可以快速輸出一個彈窗頁面,并且指定跳轉還是返回等。
- **存取鍵值表**
- 加入了 合并到() 參數【合并模式】。
- 合并模式。[0] 全部合并 [1] 只合并不存在的主鍵 [2] 只合并存在的主鍵。默認: 0
- 加入了 從表單載入() 方法。可以從表單格式的文本載入鍵值表
- 修復了 到表單文本() 方法時寬文本轉換失敗的問題(感謝 葒楓)
- **存取列表**
- 修復了 取數量() 參數為數值時可能奔潰的問題(感謝 小蝸牛)。
- **網站客戶端**
- 修復了 POST 提交【存取鍵值表】類型中存在寬文本時內容格式失敗的問題(感謝 葒楓)
- **文本處理**
- 修復了 文本_匹配通配符 可能匹配不準確的問題。
- **Redis**
- 修復了 多線程不停創建對象連接服務器久了可能奔潰的問題(感謝 大小魚)。
- **存取查詢器**
- 修復了 取回結果() 未提供【錯誤原因】參數時可能導致的內存泄露問題。
- 修復了 上跟2.8加入的屬性綁定功能可能導致的奔潰問題(感謝 銀河世紀)。
- **遠程服務**
- 修復了 加載服務信息未綁定類名稱導致參數驗證失敗的問題。關聯方法:
- 請求.驗證參數
- 請求.驗證所有參數
- **數據驗證器**
- 修復了 從JSON載入失敗的問題。
## 2.8.2
*Release date 2020/09/23*
- 易語言工具菜單加入了【打開目錄】和【打開網站】功能。可以分別打開網站根目錄和網站網址
- **服務器請求**
- 修復了 取請求地址 可能返回亂碼的問題(自動轉碼)
- **網頁內容解析器**
- 修復了取屬性大小寫敏感的問題
- **網站客戶端**
- 處理了進度函數處理時可能因為跨線程導致阻塞的問題
- **文本過濾器**
- 優化了 創建按參數 方法的【替換模式】參數。參數為1時(按字符數替換)生成的替換結果中,中文字符算單個的字符(以前的中文字符算2個字符)。例如:以前“我們”的替換結果為“****”,新的模式下為“**”
- 修復了文本過濾器在新編碼處理系統下的兼容性問題
## 2.8.1
* 2020/09/16
- 修復了文本編碼常量可能為空的問題
- **對象基礎屬性**
- 加入了通用類型屬性支持
- 加入了新的示例:011 內置對象基礎屬性
- 修復和加入所有基礎對象屬性方法的測試
- 相關方法
- 置對象屬性
- 取對象屬性
- 取對象文本屬性
- 取標識
- 置標識
- **數據驗證器**
- 加入了全新的URL解析驗證算法
[2.8.0]
* 2020/09/05
- 加入了全GBK支持(感謝 銀河世紀、大小魚)。
- 整個E2EE內的所有算法默認都以GBK格式為主。
- 譬如在JSON解析等算法時支持“€”符號等
- 加入了全UTF-8支持。
- 修復了 跨域 功能。
- 加入了固定地址路徑“*”的支持。
- 使用方法:網站.訂閱視圖函數(&視圖_星, "*")
- **模板引擎**
- 修復了模板中某些時候無法輸出變量的問題
- 依賴于GBK/UTF-8編碼機制的完善
- **網站服務器**
- 加入了URL和URI解析標準支持。
- URL RFC2396: http://www.ietf.org/rfc/rfc2396.txt
- URI RFC2732: http://www.ietf.org/rfc/rfc2732.txt
[2.7.3]
[網站請求]
- 接收被URL編碼過的內容參數時,如果參數本身編碼為UTF8或UNICODE時,參數中包含“\u”已經不會丟失(感謝)。
[2.7.2.1]
[網站服務器]
- 修復了配置項“統計狀態”無法起效的問題(感謝 rocket/ro)。原因是英文命名定義和實際調用的名稱沒有保持一致。
[網站客戶端]
- 修復了POST請求后,重定向無法轉換為“GET”的問題。CURL代碼寫死只有顯示設置方法類型為“POST”時才會啟用重定向更改方法的機制,E2EE使用統一方式設置的方法類型。
[Redis同步客戶端]
- 修復了連接時超時時間為0導致無法連接成功的問題。之前使用的是異步連接函數,更改為同步連接函數。
[2.7.2] 2020/04/13
加入了 Redis 支持:
[Redis同步客戶端]
支持常用的同步操作。發送請求后,立馬返回執行結果。
[Redist異步客戶端]
支持Redis異步操作。通常用于發布訂閱時訂閱消息使用。
[2.7.1.6] 2020/04/05
[網站服務器]
- 修復了上傳文件時接收某些文件數據可能失敗的問題(感謝 鄭雪飛、銀河世紀)。
[數據庫]
- 優化了查詢緩存機制。
* 只有查詢結果存在數據時才會建立緩存。
* 原機制由于底層使用統一的“查詢”方法,在執行查詢無異常時無論返回結果有無數據,針對“查詢”命令都表示成功,而針對“查詢頭條”則因為沒有可以依賴的返回結果則執行失敗。由于緩存是基于底層查詢方法,所以可能會導致“查詢頭條”等方法沿用“查詢”的緩存,空結果時只要存在緩存則永遠返回假。
[2.7.1.5] 2020/03/27
[存取列表/存取鍵值表]
優化了對象池回收方式。
加入了 JSON載入時使用寬文本做為主鍵的功能。非寬文本主鍵也將自動轉換為寬文本主鍵。相關方法(增加[是否寬文本主鍵]參數):
* 從JSON載入
* 置JSON值
加入了 到JSON時保持寬文本主鍵的功能。相關方法(增加[是否寬文本主鍵]參數):
* 到JSON
* 置JSON值
[2.7.1.3] 2020/03/21
[文本處理]
HTML關鍵字解碼
加入了 轉空格的支持(感謝 斷翅的三葉草)。
創建文本/輸出調試/輸出調試文本
修復了 小數類型參數,生成文本時可能為 0 的問題(感謝 葒楓、云易飛揚)。
[網站服務器]
加入了 是否已授權 方法。可以用來判斷是否以授權模式運行。
加入了 取運行狀態 方法。可以獲取服務器以下信息:線程數、請求數(秒)、上行數據量(秒)、下行數據量(秒)。
* 需要在網站配置中加入配置項“統計狀態: 真”
修復了 “上下文_綁定*”相關的方法可能綁定失敗導致奔潰的問題(感謝 銀河世紀)。
[存取列表]
修復了 主鍵更名奔潰的問題(感謝 銀河世紀)。
修復了 從網絡載入 方法的[請求頭]參數無效的問題(感謝 逍遙一仙)。
[存取鍵值表]
修復了 從網絡載入 方法的[請求頭]參數無效的問題(感謝 逍遙一仙)。
[網站客戶端]
優化了 在執行POST請求后,自動重定向后時還是“POST”方法的問題(感謝 小迷糊)。
* POST提交后的所有重定向,都將以“GET”方法執行
[通用日志對象]
修復了 內容存在“%” 時可能奔潰的問題(感謝 銀河世紀)。
修復了 銷毀日志對象或關閉程序時可能導致奔潰的問題。
[WebSocket客戶端]
加入了 使用代理服務器的功能。相關方法:
* 置代理服務器
* 是否啟用代理
* 清空代理設置
加入了 PING/PONG 消息接收的支持。
[WebSocket服務器]
加入了 PING/PONG 消息接收的支持。
[2.7.1.2] 2020/03/19
[網站服務器]
修復了 Accept-Encoding不能準確識別 no-gzip 的問題(感謝 黑色代碼)。
優化了 網址解析,允許“#”字符文件名支持。
[通用緩存對象]
[內存緩存]
修復了 計次加/計次減 可能出現不準確的問題(感謝 銀河世紀、葒楓、大小魚)。
[2.7.1.1] 2019/12/29
[網站服務器]
[重要] 修復了 連接對象的回收周期問題(感謝 思而不索)。
* 此問題在并發量波動較大、服務器配置反向代理服務器長期沒有訪問忽然恢復訪問等環境下,可能導致返回失敗的問題。
* 原因主要是服務端可能會長期保持舊的連接,而請求對象池的對象被重新分配連接時可能才會斷開釋放舊連接。
取消了 執行視圖函數時的協程處理。
[數據庫]
修復了 兼容舊版對象映射格式時,保存對象可能失敗的問題。
[網站客戶端]
修復了 取跳轉頭() 可能會缺失首個跳轉響應頭的問題(感謝 逍遙一仙)。
[路徑處理]
加入了 多文件后綴的支持。在使用“路徑_取文件列表/路徑_取所有文件”方法時,可以使用“|”分割指定多后綴名,例如:exe|txt。也支持“,”和“;”做為分隔符,同時支持通配定義等,例如:*.txt;*.exe。注意 :只支持單級別后綴,多個“.”后綴時只認最后一個級別。
修復了 網址/磁盤/局域網 等類型的地址格式化結果可能不準確的問題,牽扯到所有“路徑_”系列的方法(感謝 逍遙一仙)。
[2.7.1.0] 2019/12/17
[ADODB數據庫連接]
修復了 取回錯誤() 時變量不為空可能導致奔潰的問題(感謝 -_-(QQ:2237**1810))。
[網站服務器]
修復了 超時檢測機制可能導致的內存泄露問題(感謝大小魚)。
[2.7.0.6] 2019/12/14
優化了所有 UTF-8 相關內容的處理,包括以下部分(感謝 興國軟件網):
* 解析URL
* 解析參數
* 解析Cookie
[2.7.0.5] 2019/12/13
[網站服務器]
優化了 解析URL 內容為UTF-8編碼時解析參數位置可能不準確的問題(感謝 興國軟件網)。
[存取列表]
優化了 到XLS 方法加入了中文路徑支持。
優化了 從CSV載入/從CSV載入2/打開文件 等和CSV加載有關的方法。修復了加載內容為UTF-8時主鍵或內容可能黏連的問題。修復了尾部連續2項內容為空時不會寫入最后一列內容的問題(感謝 銀河世紀)。
[2.7.0.3] 2019/12/11
[文本處理]
修復了 Base64編碼 長度計算引起的4整數倍越界導致程序奔潰的問題(感謝 鄭雪飛、織夢)。
[網站服務器]
修復了 提交數據為JSON時編碼格式跟服務端不一致的情況下,解析JSON可能導致的內存泄露問題(感謝 大小魚、思而不索)。
修復了 取回服務器對象() 函數可能會奔潰的問題。易語言回收周期導致(感謝 銀河世紀)。
[網站請求]
修復了 取Session值_到類型() 時取[存取列表]類型內容,可能導致的奔潰問題(感謝 SsssWaiWai)。
修復了 數據庫_開始查詢緩存() 的第二項參數【超時時間】定義錯誤的問題(感謝 銀河世紀)。
[2.7.0.2] 2019/11/20
加入了 數據庫緩存技術。
[ADODB數據庫連接池]
加入了 綁定緩存對象 方法。可以指定數據庫連接池對應的緩存對象,不調用或者設置為空,則使用 網站服務器 綁定的緩存對象。
加入了 置緩存默認時間 方法。用于綁定查詢數據時的默認緩存時間(單位:秒)。
[ADODB數據庫連接]
加入了 開始查詢緩存 方法。
* 綁定查詢需要的緩存信息設定接下來查詢使用緩存技術。本方法只對下一次 查詢 有關方法有效。無論成功與否,在下次執行查詢后將清除本設置。數據庫查詢成功,則數據會被寫入到緩存中。調用本方法后使用 查詢、查詢頭條、查詢到自定義數組、查詢頭條到自定義 方法時,如果緩存中存在對應主鍵數據,則直接從緩存讀取返回。如果緩存不存在則查詢成功后,會自動寫入到緩存中。您可以使用“取消查詢緩存”方法取消本緩存設置。也可以使用“刪除查詢緩存”刪除對應的緩存數據。您可以通過綁定的主鍵,直接通過“通用緩存對象.刪除”在外部刪除緩存數據。
加入了 開始刪除緩存 方法。
* 綁定需要刪除的緩存主鍵。本方法只在下一次 執行() 方法成功時才會執行刪除緩存操作。無論成功與否,在下次調用 執行() 方法后都將清除本設置。
加入了 取消查詢緩存 方法。
* 刪除“開始查詢緩存/開始刪除緩存”方法綁定的緩存設置
加入了 刪除查詢緩存 方法。
* 刪除被查詢緩存的緩存數據。作用等同于綁定的“通用緩存對象.刪除”方法。
[網站請求]
加入了 數據庫緩存相關的上下文方法。相關方法:
* 請求.數據庫_開始查詢緩存
* 請求.數據庫_開始刪除緩存
* 請求.數據庫_取消查詢緩存
* 請求.數據庫_刪除查詢緩存
使用示例:
ID:變量為用戶ID
用戶鍵值表:取回的用戶信息
查詢:(第二次調用時將不會訪問數據庫)
連接.開始查詢緩存(創建文本(“用戶:{1}”,ID)).查詢頭條(用戶鍵值表,創建文本(“SELECT * FROM user WHERE user_id = {1}”, ID))
執行:(執行成功后將自動刪除主鍵“用戶:1”的緩存)
連接.開始刪除緩存(創建文本(“用戶:{1}”,ID)).執行(“UPDATE user SET user_name = @user_name WHERE user_id = @user_id”, 創建鍵值表(“user_id”, ID, “user_name”, 新用戶名))
[存取列表]
優化并修復了 主鍵更名 方法。只有完整的復數參數才會做更名操作(感謝 諸※葛※瑜)。
* 之前版本如果第三個參數被強制補全為空的情況下,只更改一個主鍵名會失敗
優化了 查找 方法。查找時將依賴于傳入數據類型來做匹配(感謝 桐人)。
* 原版本的智能推導模式是判斷是否為數值文本,如果為數值文本則按照數值進行匹配,如果超出數值范圍溢出則可能會導致匹配到錯誤項。
[2.7.0.1] 2019/11/19
[網站服務器]
加入了 置小數精度() 方法。可以設置服務器小數相關的內容輸出精度。其中包括以下方法相關的內容:
* 渲染
* 寫出成功/寫出失敗/寫出結果
優化了 上下文對象綁定處理。可在“初始化函數”外綁定上下文相關對象(連接池、對象映射、緩存)等,尊重用戶在任意時刻主觀或者被動綁定上下文對象(感謝 q)。
[存取對象]
JSON輸出有關的方法都加入了 小數精度 參數:
* 對象.到JSON()
* 對象.取JSON值()
[2.7.0.0] 2019/11/17
[網站服務器]
加入了 訂閱初始化完畢函數() 方法。訂閱一個回調函數,此函數將在執行完“初始化函數”后被調用。通常“初始化完成函數”被回調時,意味著所有服務器相關的(包括上級以及下級模塊)資源全部都初始化完畢。
加入了 訂閱關閉函數() 方法。訂閱一個回調函數,此函數將在網站/模塊被關閉時執行。當網站啟動失敗時,如果網站/模塊執行過“初始化函數”時,也會被觸發。
加入了 顯式綁定默認上下文對象功能,相關方法:
* 服務器.上下文_綁定數據庫連接池(): 綁定默認的數據庫連接池對象
* 服務器.上下文_綁定對象映射中心(): 綁定默認的對象映射中心對象
* 服務器.上下文_綁定緩存對象(): 綁定默認的緩存對象
加入了 共享對象 功能。共享對象相關方法都是線程安全的。共享對象可以用于在容器和模塊(或者DLL)之間對象傳遞。支持所有的 復合對象 類型的對象變量共享。包括E2EE中的所有 數據類型。也支持任何其他支持庫中的復合類型對象,不支持易語言基礎數據類型。使用共享對象功能請注意做好線程安全處理。相關方法:
* 服務器.共享對象_置對象(): 共享對象
* 服務器.共享對象_取對象(): 取回共享對象
* 服務器.共享對象_刪除對象(): 刪除共享對象
* 服務器.共享對象_清空對象(): 清空所有共享對象和共享變量
* 服務器.共享對象_還原變量(): 還原共享變量原始內容。還原“取共享對象”時傳遞變量的原始值。此變量通常跟“取共享對象”方法配對使用
重命名 反饋模型 設置相關的方法名稱。相關方法:
* 置反饋模型關鍵字: 反饋模型_置關鍵字
* 置反饋模型默認值: 反饋模型_置默認值
[網站請求]
修復了 GET/POST參數中最后一個參數的“=”后為空時,可能(產生異常被內部捕獲)不觸發視圖函數的問題(感謝 SsssWaiWai)。
* 新解析算法尾部驗證的問題
同步 共享對象 功能。功能和服務器對象中的“共享對象”方法一致。相關方法:
* 請求.共享對象_置對象()
* 請求.共享對象_取對象()
* 請求.共享對象_刪除對象()
* 請求.共享對象_清空對象()
* 請求.共享對象_還原變量()
加入了 緩存對象 上下文。相關方法:
* 請求.緩存_取字節集
* 請求.緩存_取文本
* 請求.緩存_置字節集
* 請求.緩存_置文本
* 請求.緩存_批量取字節集
* 請求.緩存_批量取文本
* 請求.緩存_是否存在
* 請求.緩存_刪除
* 請求.緩存_清空
* 請求.緩存_計次加
* 請求.緩存_計次減
* 請求.緩存_置過期時間
* 請求.緩存_置鍵值表
* 請求.緩存_取鍵值表
* 請求.緩存_置列表
* 請求.緩存_取列表
[存取列表]
修復了 查詢() 方法中 LIKE 等指令無法匹配的問題。
修復了 到JSON() 方法中包含字節集時可能會丟失引號后的內容的問題。
[存取鍵值表]
修復了 到JSON() 方法中包含字節集時可能會丟失引號后的內容的問題。
[存取查詢器]
修復了 條件() 中的 LIKE 等指令無法匹配的問題(感謝 葒楓、銀河世紀、KalinTsao等)。
* 擴展語法對語法樹處理流程做了處理。語法樹節點后編譯時,文本變量重置過文本內容為原始節點內容,帶入了“%”導致無法匹配。由于LIKE等語法節點預處理過,這里針對預處理過的文本節點樹增加了賦值狀態檢測,避免預處理內容被覆寫。
[2.6.1.3] 2019/11/15
[存取列表]
加入了 查找() 方法。查找指定值在列表中的位置。
加入了 取交集() 方法。獲取和指定列表的交集結果。
加入了 取差集() 方法。獲取和指定列表的差集結果。
加入了 取并集() 方法。獲取和指定列表的并集結果。
[RAS加解密]
優化了 創建密鑰對() 方法。當[公鑰變量]或[私鑰變量]傳入內容長度為256時,則作為公/私鑰HEX文本載入對應的秘鑰。
[2.6.1.2] 2019/11/14
[網站]
修復了 寫常規日志/寫錯誤日志 中包含轉義符“%xx”時可能奔潰的問題(感謝 醉太極)。
[網站請求]
修復了GET/POST等類型請求的參數包含“=”等未進行轉義字符的情況下可能解析不到準確的對應參數的問題(感謝 醉太極)。
* 請求本身不符合HTTP約定。
[2.6.1.1] 2019/11/13
[存取鍵值表]
優化了 子列表添加() 方法。當查詢到的對象類型不為存取列表時,則自動將對象轉換為存取列表。如果表達式指向的列表不存在,則自動創建存取列表(感謝 JimStone、興國軟件網)。
修復了 子列表刪除() 方法。行為保持和存取列表刪除一致。
* 之前的索引從1開始可能會奔潰
[數據庫]
修復了 查詢到自定義數組 在對象映射中心使用JSON類型的配置時,可能會產生奔潰的問題(感謝 SsssWaiWai)。
* 此原因是由于JSON類型的加載機制中沒有計算對象尺寸導致
[2.6.1.0] 2019/11/12
[網站請求]
優化了 置Session值() 方法。支持所有易語言基礎參數和存取鍵值表、列表。
加入了 取Session值_到類型() 方法。
[存取對象]
修復了 對象池極值可能導致的內存不降問題。
[2.6.0.3] 2019/11/06
[網站請求]
加入了 取整數參數() 方法。將參數取回為長整數型。
加入了 取小數參數() 方法。將參數取回為雙精度小數型。
修復了 驗證參數() / 驗證所有參數() 方法。此方法之前的版本中,如果路徑中包含變量可能不會跳過視圖表單驗證器(感謝 SsssWaiWai)。
[模板渲染器]
重構了 模板更新檢測算法。新的算法檢測更加科學快捷。
[數據庫]
修復了 非自增ID的關聯表在使用“保存對象”方法時可能返回[假]的問題。
[驗證器]
修復了 非自動生成(通過工具等情況)的驗證器配置加載時,“驗證項名稱”和索引中的驗證項名稱不匹配可能導致規則索引加載不準確的問題。
[對象映射]
修復了 映射對象無法正確匹配驗證規則的問題。
[模板編輯器]
加入了 強制保存方法。當打開模板文件不存在時,可自動創建模板目錄和文件。
[2.6.0.2] 2019/10/22
[網站客戶端]
修復了新客戶端對象可能復用之前的Cookie/Session的問題(感謝 小迷糊)。
加入了 重置全部() 方法。可重置當前對象的所有狀態(包括session/cookie等)。
優化了 請求方法中的[自定義請求頭]參數處理。[自定義請求頭]的參數優先級高于全局請求頭,如果同名則優先使用此參數中的請求頭。注意此功能大小寫敏感。
[2.6.0.1]
[數據庫]
加入了 對象映射驗證器 支持。可直接對字段綁定驗證規則。
* 此功能需要配合最新的[E2EE控制中心]來配置驗證規則([功能] > [驗證器] > [對象映射驗證器])。
* 在保存對象到數據庫時,將自動通過配置的驗證規則來驗證對象數據,驗證失敗時返回詳細的驗證錯誤原因。
保存對象/保存對象_鍵值表() 方法加入了[錯誤原因]參數(請求.數據庫_保存對象/數據庫_保存對象_鍵值表()方法都做了同步)。可用于接收[對象映射驗證器]的驗證結果。
[WebSocket客戶端]
修復了 阻塞式連接失敗時可能產生資源泄露的問題。
[2.6.0.0] 2019/10/21
加入了【標簽對】概念。在“服務器.訂閱視圖函數()”方法時,可以使用“標簽對()”函數創建結對的【標簽對】做為標簽使用。
注意:
1.【標簽對】的格式為文本“[主鍵]:[值]”(不包括中括號)。所以所有符合此特征的文本做為視圖/全局函數的標簽時,都將默認為【標簽對】。例如您設置視圖函數的標簽為文本“導航:管理”,那么他會自動被當成是【標簽對】類型的標簽。
2. 添加【標簽對】類型的標簽時,將自動生成名稱為標簽對[主鍵]的標簽。例如添加【標簽對】標簽“導航:管理”,那么系統會自動生成標簽“導航”到對應的視圖/全局函數中。
3.【標簽對】是有序的,順序跟訂閱時的參數位置有關。在使用同一個【標簽對】的[主鍵]添加多個標簽時,在處理函數中通過“請求.取標簽對值列表”方法返回的列表,是按照訂閱時的先后順序排序的。
[網站服務器]
訂閱視圖函數和全局函數時,[標簽]參數加入了[存取列表]類型的支持。可使用存取列表傳入函數的“標簽”屬性。并且支持[文本型]和[存取列表]多類型參數同時存在時,并行添加到“標簽”屬性中。相關方法:
* 訂閱視圖函數
* 訂閱全局函數
* 訂閱后置全局函數
[對象工廠]
加入了 標簽對() 函數。用于快速組裝【標簽對】文本,可用于“請求.訂閱視圖函數”的【標簽】參數。
[網站請求]
加入了【標簽對】相關處理方法。以下是方法列表。
* 取標簽對值:通過[主鍵]獲取標簽對對應的[值]文本。
* 取標簽對值列表:通過[主鍵]獲取標簽對對應的[值]列表。
* 是否存在標簽對:通過[主鍵]判斷是否存在標簽對。
[網站響應]
優化了 二級以上網頁模板嵌套時的檢測更新機制。當多級別模板嵌套重新檢測更新時,不會重新加載模板。
* 原來的機制在超過2秒并且嵌套級別超過2層后,會重新加載所有相關模板。
[數據庫]
修復了 保存對象/保存對象_鍵值表() 方法。
* 影響范圍:2.5.7.5 ~ 2.5.8.0 版本。
* 由于對象映射加入了[自增ID]屬性,重新處理過預處理SQL,當對象存在一對一映射且對象的“自增ID”屬性都為[真]時,生成的預處理插入SQL會存在重復插入ID字段,從而導致出現保存失敗的情況。
===================================================================================
【標簽對】使用說明:
訂閱視圖函數(&管理,,, 標簽對("導航", "首頁"), 標簽對("導航", "管理"))
在 管理() 視圖函數中,可以使用:
請求.取標簽對值列表("導航") >> ["首頁", "管理"]。
請求.取標簽對值("導航") >> "首頁"
請求.是否存在標簽對("導航") >> 真
您可以直接在全局函數中訂閱“導航”,即可攔截所有主鍵為“導航”的標簽對請求。
===================================================================================
[2.5.8.0] 2019/10/14
[存取對象]
修復了 到Base64() 方法返回空文本的問題(感謝 小渣渣)。
[存取列表]
修復了 從文本分割() 在靜態編譯環境下,數值類型轉換時可能奔潰的問題(感謝 哈嘍)。
[2.5.7.5] 2019/10/11
優化了 模板編輯器 數據中心的檢測機制。編輯模式時啟動更快。
[對象映射中心]
格式化名稱()方法 加入了[是否修復屬性]參數。可以將字段的類型強制轉換為配置設置的類型,主鍵不存在時強制賦值為默認值。
[數據庫]
加入了 [自增ID] 處理。默認所有對象都是自增ID。此設置需要配合最新版本的[控制中心],對映射對象配置是否為[自增]屬性。
[數據庫連接]
優化了 保存對象_鍵值表() 方法。當鍵值表中數據類型或主鍵不存在時,將自動轉換類型或填充為默認值,保證行為和 保存對象() 方法完全一致。
保存對象/保存對象_鍵值表()方法 加入了[保存模式]參數。可以指定保存操作的類型自動處理、修改和添加。
加入了 是否在事務中() 方法。返回當前連接是否正在執行事務過程中。
加入了 是否鎖定連接() 方法。返回當前連接是否被鎖定。
優化了 取分頁數據到模板格式() 方法。當返回數據為空時也會返回分頁信息。
[網站請求]
“數據庫_”系列方法同步為上方[數據庫]所有相關處理。
[網站響應]
修復了 模板過濾器 格式化時間() 方法。當時間無效或者為1970-01-01的閾值時也不會奔潰。
[網站服務器]
加入了 置反饋模型關鍵字() 方法。可以重新定義調用“響應.寫出成功/寫出失敗/寫出結果”方法寫出結果時,結果對應的主鍵名稱。
[2.5.7.3]
易語言插件模式下加入了[開啟/關閉 視圖函數生成]菜單。
模板編輯器初始化時檢測初始化程序是否存在。
* 不存在時不會彈出“文件不存在”信息框
[存取列表]
加入了 從CSV載入2() 方法。對CSV格式兼容的更好。
[路徑處理]
修復了 路徑_取運行目錄() 函數可能會被 通用對話框 重新定向的問題(感謝 銀河世紀)。
[對象工廠]
加入了 取主鍵路徑() 方法,可以按照級別自動生成 鍵值表/列表 尋址路徑。
修復了 創建驗證碼文本() 函數可能產生重復的問題。
優化了 創建驗證碼文本() 函數加入了中文等多字節文本的支持。
[2.5.7.2]
[數據庫]
修復了來源類型為GBK但目標數據類型為UNICODE時可能轉換內容為空文本的問題。
[網站服務器]
修復了 清空SESSION時,特殊使用場景下清空執行了跳轉操作時,可能session沿用之前的內容的問題(感謝 丑人多作怪)。
[2.5.7] 2019/09/21
[網站服務器]
修復了 Cookie中包含多項未進行URL編碼的UTF-8、GBK、字節集等多字節編碼時可能導致解析失敗的問題。
* 之前版本可能會因為此問題,間接導致無法正確處理SESSION,丟失用戶登錄信息等情況。
修復了 OPTIONS請求處理時路徑長度為1或者路徑為“*”時可能導致奔潰的問題(感謝 思而不索)。
* 當存在黑客惡意掃描時可能會觸發此問題導致服務器出現問題
優化了 瀏覽器緩存處理機制。在頁面返回304等環境下也能正確響應瀏覽器緩存設置了。
[網站響應]
加入了 發送文件 方法時的[是否緩存]屬性。如果設置為[假],則本次發送的文件響應協議頭中,不包含和瀏覽器緩存相關的響應頭(禁用瀏覽器緩存)。
[數據驗證器]
修復了 部分驗證規則無法準確匹配的問題(UNICODE改造導致)。
[2.5.6.2]
優化了 靜態編譯時的E2EE庫加載流程。程序啟動效率有明顯提升,占用內存更小。加載順序:
* 檢測【運行目錄】下是否存在“E2EECore.xxx.dll/E2EE.dll/E2EE.fne”文件,并嘗試加載。
* 檢測【臨時目錄】下是否存在對應版本的E2EE支持庫文件,并嘗試加載。
* 釋放支持庫到【臨時目錄】下并執行加載操作。
* 釋放支持庫到【運行目錄】下并執行加載操作。
* 全部失敗則彈出對應的錯誤提示和解決方法信息,同時終止執行。
修復了E2EE的GZip壓縮可能在Java環境下解壓失敗的問題(感謝 銀河世紀)。
[消息發布中心]
修復了 多線程環境下的問題。
修復了 鍵值表等類型的支持(感謝 銀河世紀)。
[2.5.6.1]
加入了 輸出調試的一組函數:
* 輸出調試: 輸出調試文本內容,功能基本和“調試輸出”一致
* 輸出調試格式: 輸出調試文本內容,調試的輸出格式和使用方法跟“創建文本”完全一致
* 配置輸出調試: 配置 輸出調試() 函數的輸出格式
[2.5.6]
修復了 URL解碼 時中文或者UTF-8中的內容為%中文等情況可能失敗的問題(感謝 KKO、思而不索、銀河世紀)。
修復了 內核部分URL解碼部分內存處理函數版本不一致導致的奔潰問題(感謝 KKO、思而不索、銀河世紀)。
修復了 XSS腳本過濾 時可能產生的替換位置不對的問題(感謝 丑人多作怪)。
修復了 URL編碼_到編碼 參數接收不對的問題(感謝 銀河世紀)。
[WebSocket]
加入了 設置包最大尺寸的方法。
* 初始化前調用 服務器/客戶端.置包尺寸 設置單包的最大尺寸。
關閉了 控制臺模式時 frame payload 時顯示所有數據內容的日志(KalinTsao)。
[2.5.5]
修復了 取寬文本長度() 函數的問題。
* [寬文本雙字節]參數無效的問題。
* 特殊數據時可能文本判斷越界的問題。
[存取隊列]
修復了 到JSON() 文本判斷越界導致程序崩潰的潛在問題。
[存取鍵值表]
修復了 到JSON() 文本判斷越界導致程序崩潰的潛在問題。
[服務器響應]
修復了 網站為“UTF-8”編碼時,渲染模板可能需要加空格才能顯示的問題。
[通用緩存對象]
修復了 計次加/計次減 在持久化后數據載入可能無效的問題。
[網站客戶端]
增強了 置進度函數 方法。在使用時加入了[增強進度函數]參數。在下載時可以接收并使用“標識”參數來區分不同的網站客戶端對象。
加入了 置標識/取標識 方法。標識在產生時是唯一的。[標識]是用來區分不同的客戶端時使用的,可以用于下載回調函數等場合。
加入了 取消請求/是否已取消 方法。當執行下載文件或者設置了進度回調函數時,可以撤銷當前請求。
[數據庫連接]
優化了 異常處理 時的連接回收機制。在大部分場景下遇到異常時,連接將被自動回收。
優化了 連接異常日志信息。錯誤時會輸出更詳細的錯誤信息日志。
[2.5.3] 2019-07-23
修復了 創建文本_預編譯 的一個BUG。
[網站服務器]
加入了 CORS 跨域功能的支持。使用時可以用“跨域請求”開頭的配置項指定跨域設置。
加入了 [OPTIONS] 類型請求的支持。
加入了 [HEAD] 類型請求的支持。
修復了 中文服務器名稱可能導致無法訪問的問題(感謝 銀河世紀)。
修復了 文本編碼轉換某些場景下可能失敗的問題(感謝 大小魚)。
[網站客戶端]
修復了 執行PUT數據 和 執行PUT文件 方法(感謝 銀河世紀)。
* 使用時請根據需求設置“Content-Type”請求頭。
[存取隊列]
修復了 多個線程超時阻塞取值時可能超時無效的問題(感謝 紅葉葉)。
[存取鍵值表]
修復了 JSON功能生成時可能無法輸出名稱的問題。
[2.5.2] 2019-07-18
[網站服務器]
修復了 新的URL編碼函數的一個溢出問題。
加入了 KeepAlive 的配置項“保持連接時間”。
* 單位為 秒。
* 為 0 則禁用 KeepAlive 功能。
[存取鍵值表/存取列表]
加入了 打包對象/解包對象 方法。
* 打包對象() 方法可以將鍵值表和列表對象直接收入內存(當前對象會自動變成空對象)。
* 解包對象() 方法可以從打包產生的對象地址載入對象到當前對象中。
[存取列表]
修復了 查詢 方法中文本比較條件時可能失敗的問題(感謝 炫狐科技 陳興華)。
[存取查詢器]
修復了 文本比較條件時可能失敗的問題(感謝 炫狐科技 陳興華)。例如:name = '文本'
[網站客戶端]
優化了 清空請求頭 方法。使用后將清除所有公共請求頭部(包括“User-Agent”)。
去除了 訂閱后置xx 等兩個多余方法。
[2.5.1] 2019-07-17
加入了 Base64解碼 函數中的[是否去除空白]參數。
[網站服務器]
修復了 非Multipart模式的POST數據接收尺寸超過64K可能失敗的問題。
[服務器響應]
修復了 置SessionID在某些特殊環境下使用時可能Session會被清空的問題(感謝 銀河世紀)。
[網站客戶端]
優化了 超時處理機制。在多線程環境使用代理等情況下,也能很好的完成超時處理(感謝 龍鵬林)。
[RAS加解密/加解密對象]
修復了 所有傳入Base64的參數中包含空白文本(空白、換行或制表符)時可能導致編碼/解碼失敗的情況(感謝 KKO)。
* Base64 實際內容不應該包含空格換行等,但實際使用為了好看,很多時候可能會有換行等符號,所以加入了自動處理。
[文本過濾器]
修復了 創建按參數 的文本數組參數內容為空時會奔潰的問題(感謝 銀河世紀)。
優化了 文本過濾器效率,使用了新的流技術。
[2.5.0] 2019-07-13
重構了 網站流程處理機制。
重構了 編碼引擎的轉換機制,使用了新的流技術。
加入了 新的文本長度統計“strlen”替代函數,效率比原版高很多(感謝 被封七號)。
[存取鍵值表/存取列表]
修復了 核心存儲對象設置文本可能導致多線程奔潰的問題(感謝 龍鵬林)。此問題主要由于C++語法的歧義引起。
[網站服務器]
修復了 模塊化運行時的渲染路徑錯誤的問題。
修復了 304狀態頁模板恢復為空。
加入了 請求/響應 對象池(請求和響應對象大部分場景下將自動復用)。
[網站客戶端]
加入了 客戶端對象池(大部分時候復用)。
優化了 超時處理機制。使用了CURL內置的select超時機制,比外置超時技術更穩定。。
修復了 上個版本因為流對象可能導致的多線程沖突問題(感謝 龍鵬林)。
[2.3.5] 2019-07-09
修復了上個版本中核心流對象的一個尺寸選擇的問題。
修復了 Base64 編碼可能包含多余字符的問題。
優化了 Base64 編碼函數。要編碼的數據允許文本和字節集。
優化了 編碼系統的效率。編碼系統大量使用了新的流技術。
鍵值表和列表對象重新啟用了內存池,主要用于內部對象中的文本和字節集對象的處理。
[網站服務器]
修復了 取參數 某些時候無法獲取參數內容的問題(感謝 葒楓)。
加入了 置日志回調 方法。可以接收服務器內部的日志內容,控制日志是否繼續(感謝 大小魚)。
重構了 HTTP協議處理流程。
加入了以下配置項:
* [邏輯型] 日志-啟用: log-enabled
* [邏輯型] 日志-網絡日志-開啟: log-network-enable
* [整數型] 提交參數尺寸: request-param-maxsize。單位為 KB。
[網站請求]
優化了 內部請求頭處理效率。
加入了 取原始請求頭 方法。可以獲取原始的請求頭文本。
[消息發布中心]
修復了 內存泄露的問題(感謝 銀河世紀、凌動運維)。
[存取列表]
優化了 到CSV 方法。允許用戶指定和數據表頭不同的輸出表頭,用于一些輸出時名稱需要昵稱的場景。
加入了 到XLS 方法。可以直接通過二進制處理的方式生成Excel文件,允許指定部分自定義格式。使用方法跟 到CSV基本一致。
修復了 從文本分割 時特殊場景下可能內存越界導致的奔潰問題(感謝 銀河世紀)。
[2.3.3] 2019-07-04
加入了 URL編碼_從編碼/URL解碼_到編碼 函數。可以指定URL編解碼的來源和目標編碼。
優化了 Base64編碼/解碼 處理。重寫了新的算法,Base64編碼效率提高了34倍,解碼效率提高了40倍。
優化了 文本/字節集 等做為返回值時的處理。新的處理針對申請內存失敗等情況加入了異常捕獲,避免內存申請導致的程序奔潰的問題(對應的返回結果可能會為空文本/字節集/邏輯[假])。
重構了 流對象 使用新的無鎖隊列技術實現了內部內存池,大大提高了文本和數據處理等相關效率,比STL標準庫中的流對象效率高3倍。
用到新技術的相關方法效率至少提升了1倍以上,主要有以下函數/方法:
* HTML關鍵字編碼/HTML關鍵字解碼
* 創建文本()
* 存取鍵值表.到JSON()
* 存取鍵值表.到字節集()
* 存取鍵值表.到Base64()
* 存取列表.到JSON()
* 存取列表.到字節集()
* 存取列表.到Base64()
* 存取列表.到CSV()
[網站服務器]
修復了接收JSON格式數據時,提交編碼和服務器編碼不一致產生的解析JSON參數長度可能不準確的問題(感謝 大小魚)。
修復了 SSL啟動時 [簽名文件]參數為空時無法正常啟動的問題。
優化了 SSL啟動時 的啟動流程和增強了相關提示信息。
[網站請求]
修復了“數據庫_”開頭方法在服務器未綁定連接池時奔潰的問題(感謝 大小魚)。
修復了模板渲染時[值]為負數無法判斷的問題(感謝 SsssWaiWai)。
加入了 取所有請求頭_到參數 方法。
[數據驗證器]
加入了手機號19x開頭的號碼段支持(感謝 大小魚)。
[存取列表]
修復了 取文本() 為小數時某些情況下可能會阻塞線程的問題。
加入了 置JSON值/取JSON置 方法。可以直接設置列表項內容為從JSON文本解析的結果,或直接獲取列表項到JSON文本。
加入了 到數組 / 從數組載入 方法。可以將列表轉換為易語言數組,將數組轉換為列表。
加入了 到表格文本 方法。可指定行列分隔符來生成文本。
加入了 查詢 方法。可以直接使用【存取查詢器】表達式直接查詢當前列表并返回結果或替換搜索結果到當前列表。
加入了 置鍵值表/置列表 的【是否交換內容】參數。
* 可以直接將內容中對應結果和當前指定的變量交互數據內容從而減少內存復制產生的效率問題。
* 如果指定位置的內容和當前要設置對象的類型不一致或不存在。則會先創建對應類型的對象之后執行內容交換操作,所以通常只要索引有效結果一定成功。
加入了 從網絡載入 的擴展參數,包括 超時時間、提交參數(POST) 和 自定義請求頭。
優化了 從文本分割 方法。
* 加入了【主鍵名稱】參數。可以指定列名稱。
* 加入了【內容包含表頭】參數。可以指定內容中的第一行是否為表頭文本。
[存取鍵值表]
修復了 取文本() 為小數時某些情況下可能會阻塞線程的問題。
加入了 置鍵值表/置列表 的【是否交換內容】參數。
* 可以直接將內容中對應結果和當前指定的變量交互數據內容從而減少內存復制產生的效率問題。
* 如果指定位置的內容和當前要設置對象的類型不一致或不存在。則會先創建對應類型的對象之后執行內容交換操作,所以通常只要索引有效結果一定成功。
加入了 置JSON值/取JSON置 方法。可以直接設置鍵值表的值內容為從JSON文本解析的結果,或直接獲取值內容到JSON文本。
加入了 從網絡載入 的擴展參數,包括 超時時間、提交參數(POST) 和 自定義請求頭。
[網頁內容解析器]
加入了 迭代器模式。使用方法(取值相關方法【索引】屬性留空即可):
解析器.選擇("tr")
判斷循環首(解析器.到下一個())
解析器.取文本()
解析器.取內部文本()
判斷循環尾()
加入了 選擇棧模式。使用方法:
解析器.選擇("tr")
如果 (解析器.選擇下級(1, "td") <> -1)
解析器.取文本(1) ' // 獲取第一個tr下的第一個td的內容
解析器.到上級文本() ' // 獲取完成后返回到上個級別的選擇狀態
如果結束()
加入了 取數量/首記錄前/到下一條() 方法。
[WebSocket客戶端]
加入了 客戶端標識功能,在多客戶端公用事件時,可使用事件子程序的[標識]參數來區分不同的客戶端。
加入了 初始化_標識 方法。初始化當前客戶端并綁定帶有“標識”參數的事件。本方法跟“初始化”方法屬于互斥關系,使用時根據具體使用場景決定使用本方法還是“初始化”方法。當您需要多個客戶端綁定相同事件時,調用本方法綁定的事件可以便于您區分不同的客戶端對象。在使用前您可以通過“取標識”方法獲取對象的唯一ID(每個客戶端創建時會有唯一的ID),也可以通過“置標識”綁定您指定的標識值。
加入了 取標識/置標識 方法。可以獲取和綁定當前客戶端進行“標識”信息。
加入了 取回消息文本_寬文本 方法。可以獲取消息文本到“寬文本”。可以通過支持庫“文本處理”類別下的“寬文本”相關的函數,或者 存取鍵值表、存取列表 等對象帶有“寬文本”的方法對此文本進行處理。
[2.3.2] 2019-06-14
解決了2.3.1核心對象復制導致的隨機奔潰問題。
[2.3.1] 2019-06-13
[E2EE定制版核心庫]
修復了 URL編碼/URL解碼 兼容性問題(感謝 銀河世紀)。
[存取鍵值表/存取列表]
修復了JSON解析長整數過長時超出長整數范圍的問題,自動轉成文本型。
修復了JSON解析雙精度小數型數值過長導致奔潰的問題。
[網站客戶端]
修復了CURL在Windows下超時無效導致阻塞的問題。
[2.3.0] 2019-04-28
加入了 創建文本_預編譯 函數。
* 作用等同于 創建文本() 函數。
* 可對文本表達式進行預編譯處理。
* 大部分場景下運行效率比易語言默認連接文本的效率要高。
修復了 寬文本轉換為GBK等環境下,尾部為“\”導致轉換失敗的問題(感謝 銀河世紀)。
修復了 文本編碼轉換 函數中編碼不存在時出現奔潰的問題(感謝 小蝸牛龍鵬林)。
修復了 打包網站 命令在命令行模式下成功時也提示“輸出文件失敗”的問題(感謝 SsssWaiWai)。
修復了 路徑_取后綴 文件沒后綴而中間目錄存在“.”時獲取路徑錯誤的問題(感謝 大小魚)。
[網站服務器]
加入了 取模塊路徑() 。可以獲取當前服務器在容器中的相對路徑。
修復了 初始化_從打包數據 方法初始化網站,無法訪問靜態資源的問題(感謝 SsssWaiWai)。
網站配置加入了“禁用日志”/“log-disabled” 邏輯型 配置項。可以禁用日志輸出。
[網站響應]
修復了 置SessionID 方法可能無效的問題。
修復了 取回響應數據 方法導致奔潰的問題(感謝 銀河世紀)。
[存取鍵值表/存取列表]
優化了 從JSON載入 方法(感謝 御弟哥哥)。
* 載入的數據類型支持 文本 和 字節集 類型的數據。
* 第二個參數為了保留向上兼容性,參數類型從“邏輯型”更改為“通用型”,實際內容只支持“文本型”,其它類型將自動忽略。
* 第二個參數的意義更改為:來源數據的編碼格式。主要用于兼容非GBK來源的數據,且增強Unicode即E2EE中“寬文本”的數據兼容。
[消息隊列客戶端]
優化了 所有方法的參數[錯誤]的處理。在執行方法前所有[錯誤]參數變量會先清空,避免用戶未清空變量時誤認為是上次的錯誤(感謝 YF 和 Devil)。
[消息發布中心]
修復了 發布消息 方法永遠返回 假 的問題(感謝 葒楓)。
[RAS加解密]
修復了 簽名/驗證簽名 方法的“待簽名數據/待驗簽數據”參數,已改為通用型。
[存取查詢器]
加入了 存取查詢器 對象。目前 存取查詢器 還不是非常完善,但基本能滿足大部分場景。
[2.2.3] 2019-02-22
E2EE 2.0 命名【勇者】!
E2EE 2.2.3 將迎來E2EE歷史上最穩定最可靠版本。
修復了 核心服務器 連接定時器回收對象失敗,可能導致程序奔潰的問題(感謝 小蝸牛龍鵬林 的逼迫)。
加入了 線程異常終止時的環境恢復機制。在COM內部或者超時終止等E2EE內部環境導致線程奔潰的環境下,線程能夠自動恢復為工作狀態。
[網站服務器]
修復了 靜態文件 時間檢測緩存(304 If-Modified-Since)未起效的問題。
修復了 靜態文件 瀏覽器緩存檢測周期無效的問題。
修復了 免費版 啟動時模板數量統計不準確導致啟動失敗的問題(感謝KKO)。
優化了 遠程服務 功能。
修復了 多值模式下接收日期類型錯誤的問題。
加入了 遠程服務編輯器 程序。
優化了 遠程服務助手 程序。
[網站請求/網站響應]
修復了 獲取SessionID無效的問題(感謝 六十五公斤)。
修復了 中文名稱表單可能無法獲取數據的問題。
[模板編輯器]
加入了【自動換行】設置。默認為【啟用】狀態。
加入了【生成易語言表單接收代碼】功能。可將頁面表單直接生成易語言 視圖函數 中的 變量定義 和 取參數 相關代碼。
優化了編輯器加載速度。
[存取鍵值表]
加入了 子列表刪除 方法。
[2.2.2]
加入了 關閉數據執行保護 函數。用來關閉當前進程的數據執行保護功能(感謝 小蝸牛龍鵬林)。
[網站服務器]
優化了無法從反向代理請求頭獲取真實客戶IP時的處理機制。當獲取遠程請求地址失敗時,則跳過請求頭而直接獲取客戶端的遠程地址。
修復了在無網站配置等環境下,關閉服務器重新啟動失敗錯誤原因為“string too long”的問題(感謝 Grapes)。
[WebSocket客戶端]
修復了停止可能會一直阻塞的問題(感謝 欲)。
[2.2.1]
加入了 取E2EE版本 函數。可以獲取當前E2EE的版本號信息。
WebSocket服務器和客戶端相關應用庫升級為最新版。
[數據庫]
查詢頭條修復了數據不存在時奔潰的問題(感謝 銀河世紀)。
[WebSocket服務器]
修復了 獲取用戶地址 不準確的問題。同時加入了原始地址和IPv4的獲取。
加入了 初始化_多服務端 方法。可通過綁定標記的方式,來做服務端區分。
加入了 多服務端 支持。通過 初始化_多服務端 定義的回調函數中,都加入了【標記】參數,可用來區分不同的服務端。
[郵件發送客戶端]
修改了 分塊模式 默認值為 假。避免新手使用時無附件的情況不知道設置,導致郵件發送后有些郵箱解析不了。
[通用緩存對象]
內存緩存功能 加入了 持久化支持。使用方法:創建內存緩存 時,【存儲路徑】參數不為空時有效。
[2.2.0]
重構了視圖調用流程機制。統一了 [視圖函數] 和 [全局函數] 的返回值作用,所有視圖或全局函數需要遵循以下約定:
* 任何 [視圖函數] 和 [全局函數] 返回 [假] 時,將直接終止任何后續邏輯的執行(請求將直接處理完成)。
* 任何 [視圖函數] 和 [全局函數] 返回 [真] 時,繼續執行后續邏輯。
* 任何 [視圖函數] 和 [全局函數] 修改 [響應.響應狀態] 為非 200 的情況。請求處理完成后:
* 執行對應作用域指定的[全局函數]和[后置全局函數](使用“#全局函數_狀態頁”指定作用域的全局函數)。
* [全局函數]執行后,[后置全局函數]執行前,將渲染[模板]目錄下“<響應狀態>.esp”文件。渲染的數據可通過“請求.屬性表()”來指定。
修復了上一版本中虛擬磁盤系統可能無法讀取內存文件的問題。
去掉了 Redis 功能。
加入了 Unicode 的支持。相關的方法如下:
創建寬文本
寬文本到文本
寬文本到編碼
取寬文本長度
網站請求.取參數
網站請求.取多值參數
網站響應.寫出寬文本
網站響應.寫出結果_寬文本
網站響應.寫出成功_寬文本
網站響應.寫出失敗_寬文本
存取鍵值表.取類型() 返回 96
存取鍵值表.創建消息_寬文本
存取鍵值表.取寬文本
存取鍵值表.置寬文本
存取鍵值表.置寬文本_編碼
存取鍵值表.到JSON
存取列表.取寬文本
存取列表.置寬文本
存取列表.置寬文本_編碼
存取列表.插入寬文本
存取列表.插入寬文本_編碼
存取列表.添加寬文本
存取列表.添加寬文本_編碼
【服務器輔助】和【對象工廠】分類下有關的文本方法被統一放入到新分類【文本處理】下。
[模板編輯器]
加入了 多編碼支持。模板編輯器可以始終適配網站任意編碼。使用全新編碼兼容機制。
修改了 預覽區域默認背景為白色。
修復了 某些情況下模板內容會變成亂碼的問題。
加入了 搜索 功能。
[標簽] 頁加入了 自動表格生成(點擊標簽右邊“表格”)。
[數據] 頁加入了 【對象映射】類型。支持自動生成映射對象的 添加/修改 表單。
[網站服務器]
修復了 服務器啟動時,模板加載失敗引起的無法成功啟動問題。
修復了 靜態文件 無法被瀏覽器緩存的問題。
加入了 訂閱后置全局函數() 功能。
* 觸發條件跟 訂閱全局函數() 一致。
* 觸發時機在執行完[視圖函數]之后執行。
* 如果[視圖函數]返回 假,后置全局函數將不會被執行。
加入了 全局函數作用域的支持。訂閱全局函數() 和 訂閱后置全局函數() 時,標簽參數可使用“#全局函數_”開頭的常量來定義作用域(此方法代替以前的“#請求地址變量_”的作用),支持以下作用域:
#全局函數_所有請求 : 攔截【所有請求】到當前全局函數。
#全局函數_動態請求 : 攔截【所有視圖函數】請求到當前全局函數
#全局函數_靜態文件 : 攔截【所有靜態文件】請求到當前全局函數
#全局函數_文件列表 : 攔截【所有文件列表】請求到當前全局函數( 請求.屬性表() 可獲取要渲染的目錄列表等數據 )
#全局函數_動態模板頁 : 攔截【所有動態模板頁】請求到當前全局函數
#全局函數_狀態頁_404 : 攔截【所有響應狀態為404】請求到當前全局函數
#全局函數_狀態頁 : 攔截指定【狀態頁】請求到當前全局函數。使用方法:創建文本(#全局函數_狀態頁, [響應狀態]),例如攔截所有404:創建文本(#全局函數_狀態頁, 404)。也可以使用函數“全局函數_狀態頁()”來代替創建文本的用法
#全局函數_上傳文件 :在文件上傳前和上傳后攔截。通過 服務器.訂閱全局函數(#全局函數_上傳文件) 將在上傳前攔截,通過 服務器.訂閱后置全局函數(#全局函數_上傳文件) 將在上傳成功后攔截,可以通過 請求.上傳文件_取當前文件信息、上傳文件_置當前文件路徑、上傳文件_跳過當前文件、上傳文件_終止文件上傳 等方法來獲取和設置文件信息。
#全局函數_上傳失敗 :在文件上傳失敗時攔截。通過 服務器.訂閱全局函數(#全局函數_上傳文件) 將在上傳前攔截,訂閱后置全局函數時無效。
[使用方法]
服務器.訂閱全局函數(&全局_所有請求, #全局函數_所有請求)
全局函數攔截的特定的狀態頁時,標簽參數可以使用 全局函數標簽_狀態頁() 方法對特定狀態頁進行攔截。例如:服務器.訂閱全局函數(&攔截404,#全局函數標簽_狀態頁(404))
訂閱視圖函數 方法的【標簽】參數可使用 視圖函數標簽_綁定對象 方法。將請求和對象名稱進行綁定處理。綁定后,請求中的所有用到對象名稱的方法,都可以省略【對象名稱】參數。
增強了 訂閱視圖函數 功能。現已允許同一個視圖函數多次訂閱。
增強了 訂閱全局函數 功能。現已允許同一個全局函數多次訂閱。
[網站請求]
是否存在參數() 加入了【是否判斷值】參數。可以判斷是否存在參數并且內容不為空。
取參數 和 取多值參數 方法加入了【是否寬文本】參數。可獲取內容為寬文本內容。
加入了 數據庫 和 對象映射 等相關對象的便捷數據處理方法。主要包含以下方法:
[數據庫]
網站請求.數據庫_取連接
網站請求.數據庫_查詢
網站請求.數據庫_查詢到自定義數組
網站請求.數據庫_查詢_到屬性表
網站請求.數據庫_查詢頭條
網站請求.數據庫_查詢頭條到自定義
網站請求.數據庫_查詢頭條_到屬性表
網站請求.數據庫_查詢到分頁
網站請求.數據庫_執行
網站請求.數據庫_保存對象
網站請求.數據庫_保存對象_鍵值參數
網站請求.數據庫_取回錯誤
[對象映射]
網站請求.對象映射_對象轉自定義
網站請求.對象映射_自定義轉對象
網站請求.對象映射_對象轉數組
網站請求.對象映射_數組轉對象
網站請求.對象映射_格式化名稱
針對上傳流程的精細化處理,加入了上傳相關方法可以獲取上傳文件信息和控制上傳處理過程。主要包含以下方法:
以下方法只能用于訂閱全局函數 #全局函數_上傳文件 中(后置全局函數無效):
網站請求.上傳文件_取當前文件信息
網站請求.上傳文件_置當前文件路徑
網站請求.上傳文件_跳過當前文件
網站請求.上傳文件_終止文件上傳
以下方法主要用于普通視圖函數中:
網站請求.上傳文件_取上傳文件路徑
網站請求.上傳文件_取上傳文件信息
網站請求.上傳文件_取所有上傳文件
?
[數據庫]
[數據庫連接池]
加入了 讀寫分離 的支持。
修復了 創建 方法總是返回 假 的問題。
[數據庫連接]
加入了 保存對象_鍵值參數() 方法。作用跟“保存對象”方法一樣,只是傳入的[對象]參數可直接使用鍵值表。支持格式化傳入鍵值表的主鍵名稱,到不同場景下的命名。參數值支持以下場景:
* [-1] 不格式化
* [0] 原始名稱
* [1] 字段名
* [2] 表單名
[對象映射中心]
修改了 自定義轉對象() 和 數組轉對象() 方法的參數。原來的[是否為昵稱:邏輯型]參數改為了[名稱類型:整數型]。可指定輸出以下場景的命名:
* [0] 原始名稱
* [1] 字段名
* [2] 表單名
加入了 格式化名稱() 方法。可轉換使用[對象映射]功能命名的[鍵值表]主鍵名,到以下場景的命名:
* [0] 原始名稱
* [1] 字段名
* [2] 表單名
[數據參數支持的類型]
* 存取鍵值表: 轉換主鍵名到對應場景
* 存取列表:轉換 列表 下級鍵值表的主鍵名到對應場景
[存取鍵值表/存取列表]
加入了 從JSON載入/到JSON 對 UNICODE 的支持。可生成 \u 作為UNICODE轉義的JSON內容。
到JSON 方法加入了【排序方式】參數。可指定【對象】類型的輸出是否按照主鍵名進行正向/逆向排序。
取鍵數組 方法加入了【排序方式】參數。
[正則表達式PCRE]
加入了 命名標簽 的支持。在調用“搜索”方法時可以加入匹配結果的命名。格式:(?<名稱>(正則子表達式)) 例如:\s+(?<ago>(\w+))_(?<suffix>(\d+))
[2.1.0]
重構了 服務器底層網絡處理和流程處理機制。
* 運行效率更高
* 框架更加靈活
* 實現數據傳送精細化控制
為了實現穩定性改造,以下對象的相關方法調用方式做了改動:
* ADODB數據庫連接池
* ADODB數據庫連接
* ADODB數據庫分頁
[網站服務器]
優化了文件存在性判斷邏輯。加入了文件狀態瞬時緩存,有效提高靜態文件(和靜態緩存的文件)的傳輸效率。
[通用緩存對象]
修復了內存緩存 計次加/計次減 無法響應超時的問題(感謝 過客、特蕾西亞·范·阿斯特藥)。
修復了 批量取文本 等批量可能會奔潰的問題(感謝 葒楓)
[網站客戶端]
修復了 允許HTTP錯誤 參數無效的問題。400+/500+ 等類型的請求都可返回原始數據。
[2.0.2]
[網站服務器]
修復了 只存在 和 只調用 全局函數(或#請求地址變量_所有請求) 時寫入Session無效的問題(感謝 大小魚)。
[Redis客戶端]
加入了 Redis 客戶端。
[2.0.1]
修復了上個版本不支持2003的問題。
[消息發布中心]
加入了消息發布中心對象。
* 支持界面交互
* 支持分布式(RabbitMQ/Redis)
[網站服務器]
Session的ID信息加入了 HTTPOnly 屬性(感謝 智慧人生)。
配置中使用“SESSION啟用HTTPOnly”(邏輯型)來開啟
Session的ID加入了格式校驗機制。可配置
配置中使用“SESSION格式校驗”(邏輯型)開啟
修復了 防火墻_拉黑用戶 在不存在IP時會失敗的情況(感謝 瘋狂大魔男)。
[數據驗證器]
修復了 到JSON 輸出可能為null的問題(感謝 月方)。
優化了 從JSON載入 時的參數兼容性。
[讀寫共享鎖]
重寫了 讀寫鎖 機制。
* 全面取消 讀寫鎖句柄的概念,使用過程中 結束讀/結束寫 不再需要傳遞任何參數。
[鍵值表/列表]
加入了 從網絡加載 方法。可以直接從網站等地方加載鍵值表或列表數據。
* 支持編碼設置和GET/POST。
* 支持手動指定 網絡客戶端。
[網站客戶端]
修復了 上傳時中文名可能會缺失的問題(需要提前設置客戶端編碼)。
加入了 上傳文件使用字節集的方法。
* 使用方法:鍵值表設置參數時,表項使用 客戶端.創建上傳文件項_從字節集 方法。
[1.9.2]
[鍵值表/列表]
修復了 列表.到JSON 方法可能會產生內存泄露的問題(感謝 七分怒)。
* 1.8.7版本時對內存機制做重大修改時此處未修改成功。
修復了 使用(JSON式)表達式 賦值時列表中產生多余“null”空值的問題(感謝 月方等)。
[通用緩存對象]
內存緩存時修復了計次加和計次減時,文本包含0或9出現初始賦值失敗的情況(感謝 Devil、鄭雪飛)。
[消息隊列客戶端]
創建隊列 方法加入了[創建參數]參數。可指定隊列自定義參數(感謝 Devil)。
創建交換機 方法加入了[創建參數]參數。可指定交換機自定義參數。
訂閱消息 方法加入了[預加載數]參數。可指定隊列提前加載消息數量。
發布消息 方法加入了[消息屬性]參數。可使用“#消息屬性_”開頭的常量做為主鍵指定消息相關屬性。
取回消息 方法加入了[消息屬性]參數。可取回消息相關的屬性內容。
修復了 刪除交換機 無效的問題。
加入了 創建隊列 時空隊列名的支持。隊列名為空時,則認為是創建臨時隊列。創建臨時隊列成功后,綁定隊列 和 訂閱消息時,隊列名為空則都默認指向新創建的臨時隊列。
[通用線程池對象]
優化了線程調度機制。當線程都處于阻塞狀態時,線程數量未達到最大值將自動啟用新的線程執行任務。
* 之前的機制是隊列數量達到指定數時,才會自動啟用新線程。
[數據驗證器]
修復了 到JSON 方法時[規則參數]總是為“null”的問題(感謝 SoIdea、月方)。
* 當前調用 到JSON 方法時[規則參數]將始終輸出為文本類型(非數組)
* 從JSON載入 方法中的[規則參數]同時支持 數組 和 文本型。
[郵件發送客戶端]
修復了 郵件發送時間的時區永遠為0的問題(感謝 XGSoft)。
[1.9.1]
修復了編碼轉換時的一個判斷邏輯問題(感謝 鄭雪飛)。
* 上次提高文本效率產生的
[1.9.0]
優化了文本空和非空判斷機制相關效率提高了很多(感謝 被封七號)
修復了靜態編譯時動態加載DLL中調用E2EE時,卸載失敗的問題。
[數據庫]
取消了 線程自動初始化COM機制。
* 可靠性會有影響
[網站客戶端]
加入了 取Cookie 方法。可以獲取客戶端關聯的所有Cookie或指定域名下的Cookie數據。
[消息隊列客戶端]
修復了連接時用戶名密碼錯誤 或者其它情況下,出錯直接奔潰的問題(感謝 SoIdea)。
[鍵值表]
加入了 是否為空值 方法。可判斷對應主鍵內容是否為 空類型的數據(感謝 f2)。
加入了 連續置值 方法。作用跟 創建 方法差不多,不同的是不會清空原始結果內容。如果對應主鍵已經存在,則主鍵對應內容會被新內容覆蓋。
[1.8.9.7]
修復了對Windows XP/Windows 2003的兼容。
[請求]
加入了 請求.載入() 方法。視圖函數觸發的函數中使用(包括 模板函數)。
[響應]
加入了 響應.載入() 方法。視圖函數觸發的函數中使用(包括 模板函數)。
[存取隊列]
修復了 取回存取列表類型的對象時 結果為空的問題(感謝 銀河世紀)。
[線程池]
修復了 程序窗口關閉時彈出錯誤的問題(感謝 XGSoft)。
[1.8.9.6]
優化了靜態庫加載機制。
[數據庫]
優化了ADO對象初始化機制,任意多線程環境中能夠自動初始化。
[鍵值表/列表]
所有“置值”方法加入了自動創建節點的功能。
鍵值表.置值(“//a.b.c”, 5) => 自動創建 { a: { b: { c: 5 } } }
JSON式尋址路徑加入了以下轉義符:
\r\n 換行
\t 制表符
\\ “\”本身
\. “.”符號(不再作為節點分隔符號)
例如:
“//a.b\.c” => { "a": { "b.c": xx } }
[1.8.9.5]
[數據庫]
修復了 查詢 和 查詢到自定義 的[批量取值]模式時內存泄漏的問題(感謝 XGSoft/興國軟件網)。
[定時任務]
優化了檢測機制,采用冗余處理保證不漏掉每一秒的任務。
修復了停止無效的問題(感謝 龍鵬林)。
[1.8.9.4]
[存取隊列]
加入了 壓入頂部 方法(感謝 Devil)。
[1.8.9.3]
[數據庫]
連接.查詢() 增加了“是否批量取值”參數。
[線程池]
重構線程池對象。功能更強更好使。
修復了取值只能取鍵值表的問題。
修復了停止時獲取任務數變負數的問題(線程競爭引起的)。
[定時任務]
加入了定時任務對象和示例。
[1.8.9]
[存取隊列]
加入了存取隊列對象,可以當成線程安全的隊列或棧使用。支持所有存取鍵值表和列表支持的數據類型(易語言基礎數據類型和列表、鍵值表)
[加解密]
修復了解密失敗時可能產生奔潰的問題(感謝 銀河世紀、f2)。
[數據庫]
連接.查詢() 增加了“是否本地游標”參數。開啟后獲取量大的數據時效率飛起,具體用法參考參數說明(感謝 XGSoft)。
[鍵值表]
到表單文本 加入了排序功能。可以按照ASCII進行正向和反向排序。
加入了 到XML 和 從XML載入 方法。可生成XML和從XML加載鍵值表,生成XML支持按主鍵名稱排序。
[消息隊列客戶端]
修復了鍵值表和列表類型數據取值引起的內存問題。
[1.8.8]
優化了Session機制。不會再產生大量空Session文件造成的堆疊,從而引起服務器啟動緩慢的問題。
修復了使用E2EE無法彈出自動創建變量窗口的問題。
修復了回車創建視圖函數時會生成一個同名空參數函數的問題。
[模板編輯器]
修復了上個版的模板編輯器無法加載的問題。
模板編輯器處理了預覽部分背景色。默認為白色。
[網站服務器]
修復了模塊路徑以“/”掛載時,無法跳轉的問題。
加入了[107 動態模塊]示例。動態模塊是從DLL動態加載服務器,屬于正式版功能的一部分。
[存取列表]
修復了刪除第二個參數為空等情況無法刪除的問題(感謝 一縷陽光)。
[正則表達式]
加入了 取子項數() 方法。可獲取表達式中子表達式的數量(感謝 葒楓)。
[1.8.7]
進一步提升了E2EE的穩定性。多線程等環境相比以前要穩定很多(跳過了易語言支持庫SDK申請內存的巨坑)。
[列表]
加入了 分級取值的方法。可使用如下方式取值 列表.取文本(1, "server", "name")。修復了上個版本的序號取值總是第一個的問題。
[正則表達式PCRE]
加入了正則表達式PCRE版本。支持 匹配、搜索、提取、替換。多線程環境也能可靠的執行處理。
[消息隊列客戶端]
加入了消息隊列客戶端功能。主要針對RabbitMQ和ActiveMQ等標準AMQP服務器,對RabbitMQ最友好,使用前請先安裝RabbitMQ。支持RabbitMQ等服務器的 隊列、交換機、發布和訂閱等常用功能。
[1.8.6]
[網站客戶端]
加入了 置Cookie文件 方法。可多線程共享cookie數據。
[模板]
修復了選擇類型的模板導致的奔潰問題
[列表]
加入了 分級取值的方法。可使用如下方式取值 列表.取文本(1, "server", "name")。
[鍵值表]
主鍵更名加入了容錯處理。原始主鍵名稱不存在時則跳過對應的更名操作,存在則進行實際更名。原來的處理方法是原主鍵名不存在則直接返回失敗。
網站配置中加入了“允許代理地址”配置。類型為邏輯型(值可以設置為 真 / 假)。默認為 假。
開啟后將不會拒絕以“http://”或“https://”開頭類型的請求。關閉后,所有以這些關鍵字開頭的請求都將被直接拒絕。
創建文本從時間 加入了容錯機制,允許在格式不正確的時候也能執行格式化操作(感謝 燒餅帝)。
原因是微軟的時間格式化函數不做任何容錯且不拋出異常直接停止工作。https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
[1.8.5]
修復了編譯后的一個重大問題導致棧奔潰的問題。
[1.8.3]
優化了 E2EE 內存中同進程庫的加載機制,更加可靠。
E2EE程序在內存中永遠只保留一個版本,無論何種方式調用E2EE,只要是同進程都使用外層服務器所使用的E2EE版本,不會進行重復加載。
[網站服務器]
重構了 取配置文本() 。剔除了英文命名,加入了獲取JSON形式的文本。可通過參數 是否為JSON 獲取。
加入了 取驗證器(驗證器文件)。可通過驗證器文件名載入驗證器。
優化了 服務器日志處理。當打開日志文件失敗(日志文件為只讀等情況)時,可順利啟動服務器。
[其它]
創建文本() 修復了“``”時無法轉換為雙引號的問題。
重新處理了 E2EE通用服務模塊。
把網站做成服務時,請不要調用 網站.初始化() 方法。資源或者依賴路徑的初始化,請放在“網站.訂閱初始化函數”對應的回調函數中。
[1.8.2]
[數據庫連接池]
加入了 輸出執行SQL 和 執行時間 到日志的功能。對應的方法“是否輸出SQL”和“置是否輸出SQL”。可隨時開啟和關閉(線程安全)。
[網站服務器]
加入了 等待結束 方法。等待服務器運行直到停止或者結束。如果服務器在運行中,則此操作會一直等待并且會阻塞當前線程
加入了 清除頁面緩存 方法。可通過請求相對路徑,清除服務器上的 靜態文件緩存 和 動態請求緩存 中的緩存數據。
修復了 大文件(2G以上) 獲取尺寸無效的問題。這個是因為之前為網站打包工作做改造時,統一使用了32位數據長度的文件信息獲取方法,32位有符號的數值無法描述2G以上的文件尺寸,會產生越界。
!!! 此功能影響到 網站打包 功能,所以可能需要新版的網站打包功能做支持。或者手動調用 網站打包 功能對網站進行打包。
[1.8.0]
SSL部分加入了蘋果ATS(強制HTTPS)支持。開發小程序對接微信等方面更加友好。E2EE服務器現已支持PFS完全前向保密機制。
[網站服務器]
加入了 動態緩存頁 請求數據緩存的功能。
修復了 文件上傳尺寸過大等情況下,還能獲取上傳成功的消息狀態。
上傳 在配置中 最大上傳尺寸 單位改成了 KB
上傳 文件類型加入了白名單模式。
如果只限定范圍內的文件類型,上傳文件類型只要填寫后綴即可,例如:jpg;gif;png;webp(此時只允許這幾種后綴的文件上傳)
如果允許上傳大部分類型,而只限定不允許某些類型,則可以使用 * 來代替所有,之外的后綴都不允許。例如:*;exe;com;bat;msi(此時除了exe...msi之外的所有類型都允許上傳)
修復了 某些情況下,靜態緩存文件無法準確響應 gzip 的問題。
[服務器請求]
加入了 驗證參數() / 驗證所有參數() 功能。自動匹配和驗證 遠程服務/視圖函數 的參數。響應驗證器設置。
[存取鍵值表/存取列表]
修復了 鍵值表/列表 在某些特定環境下可能解析JSON或創建小數類型對象崩潰的問題(感謝 D-OWL)。
[對象工廠]
加入了 創建時間戳() / 載入時間戳() 功能。能夠生成和載入秒或毫秒級的時間戳(感謝 Grapes)。
修復了 創建文本從時間() / 創建時間從文本() 中的國際時間轉換問題。
重寫了 創建文本從時間() 和 創建時間從文本()。不會再因為格式不匹配阻塞或者崩潰。
優化了 Base64解碼 函數,可兼容包含換行等號空格等情況。
[網站客戶端]
!!! 重要更新:返回信息頭如果有多個,將不會再轉換為存取列表,而是會不停的追加多行文本,一行表示一條數據。
修復了 鍵值表 作為POST參數時可能引起的訪問失敗問題。
加入了 自動跳轉時,獲取每次服務器返回的信息頭。
修復了 代理設置無效的問題。可正常使用代理服務器。
[網頁內容解析器]
修復了標簽和屬性中出現“-”和“_”無法完整解析名稱的問題。
[加解密對象]
修復了 RSA 加解密簽名時,設置輸出小寫十六進制文本始終為大寫的問題(感謝 番茄)。
[數據驗證器]
字母中文等驗證條件加入了擴展字符支持。允許在字母等驗證時可包含自定義字符“空格”“中劃線”等。
[1.7.40]
[網站打包]
修復了 空文件 時打包阻塞的問題。
[模板引擎]
加入了 “否則”標簽的支持。判斷時支持成功和失敗分別顯示不同內容。
[服務器請求]
加入了 是否存在參數 方法。可以判斷指定名稱的參數是否存在。
[服務器響應]
修復了 響應.置模板渲染路徑 無效的問題(感謝 向爸)。
* 很抱歉,這是批量修改支持庫接收易語言傳遞參數的方式引起的第二個問題,給大家帶來不便希望能夠諒解。
* 易語言支持庫取參數的方式很麻煩,所以我做了一組宏簡化大量工作,前期的一些功能也都改造為新宏的支持。
* 因為取值方式的不同,所以都是一個一個根據邏輯做的修改,每一個都很認真的,但是命令太多,沒辦法覆蓋測試所有功能。
[存取鍵值表/存取列表]
JSON處理完善了一些特殊情況下生成和導入失敗的情況。目前為止已可以處理所有中文數據。
取數量() 加入了參數。可取下級內容的數量。(感謝 番茄)
[路徑處理]
路徑_合并() 加入了多參支持,允許2個以上參數的路徑連接。
[網站客戶端]
升級到了最新版的CURL。
加入了 chunk 數據的讀取算法,可解析 chunk 編碼格式的數據。
* 相關方法:置啟用CHUNK解碼() / 是否啟用CHUNK解碼()
加入了 取響應頭文本()方法。可以獲取原始響應頭文本(無論成功還是失敗)。
修復了 POST 等上傳文件無文件名導致的上傳無效的問題。
修復了 POST 上傳等特殊場景下默認使用UNIX換行符產生的問題(感謝 D-OWL)。
修復了 置請求頭()方法無效的問題。
修復了 執行POST()時參數為空引起的崩潰問題(感謝 智慧人生)。
[ADODB數據庫連接]
修復了 讀取字節集數據時,內存不釋放一直上漲的問題(感謝 智慧人生);
[1.7.38]
修復了所有示例。兼容1.7之后的版本。
優化了 Memcached支持。將 libmemcached 的內存分配器改成了易語言統一申請內存的方式。
修復了URI解析過程的一個邏輯陷阱。兼容中文等情況的URI二次解析可能出現的問題。
修復了XML解析等情況下得到的文本內容超出預計范圍的問題。
修復了 模板編輯器 的若干問題。
1. 標簽[正常輸出]為空的情況
2. 包含文件列表為空的情況
修復了 通過后綴名獲取文件列表的一些場景下,后綴名包含“.”無法得到文件列表的情況。
[1.7.37]
服務器響應對象加入了標準反饋信息的支持(API)。如果您希望把您的視圖做為遠程調用函數,強烈建議使用這組方法來寫出反饋結果。未來E2EE也會提供更加完善的遠程調用機制,也會將此反饋模型做為標準協議提供更多功能的支持。
響應.寫出結果()
響應.寫出成功()
響應.寫出失敗()
[網站客戶端]
修復了設置HTTP請求頭后再次執行請求崩潰的問題。
修復了針對JSON和JS的自動編碼轉換無效的問題(神6、物聯科技)。
HTTP中返回的協議頭里的Content-Type中,網站客戶端只轉換了 txt/ 開頭的MIME類型,JSON和JS的MIME是以 application 開頭的,特地加入了針對這種情況的支持。
[存取鍵值表]
優化了 合并到() 方法。結果將以 合并到 左邊的鍵值表為主,強制覆蓋 目標 鍵值表中所有主鍵名稱相同的主鍵和添加不存在的主鍵內容。
加入了 置為空值() 方法。可設置主鍵對應的內容為 空 值。
[存取列表]
加入了 置為空值() 方法。可設置指定位置的內容為 空 值。
[1.7.36]
修復了設置Session的ID某些場景下無效的問題(用戶首次系統自動產生SessionID時無法再次手動設置等情況)。允許同一次請求執行多次Session的ID設置,只使用最后一次的設置。
[數據庫分頁]
修復了查詢到分頁實際的分頁尺寸永遠為10條的問題。為啥沒有人告訴我這個問題!!!(感謝 左邊的石頭)
[通用緩存對象]
在取鍵值表和列表的數據之前,加入了對象清空操作。避免取到臟數據。
[WebSocket服務器]
加入了 取客戶地址 方法。可以獲取客戶的IP地址。
[1.7.35]
[網頁內容解析器]
加入了 取下級文本/取下級內部文本 方法,可對選擇結果進行二次篩選。
對應的示例[717]做了更新。
[網站客戶端]
修復了 某些特殊環境下GET不受控制得不到HTTP響應頭的內容(不知道是不是盜版引起)。
渲染() 方法加入了列表的立即值輸出。
例如:
列表名為“名稱組”,值為 ["a", "b", "c", 1, 2, 3]
則頁面上可以使用
{{#名稱組}}
{{名稱組}} <= 直接使用列表的變量名即可直接輸出變量的值
{{/名稱組}}
[存取鍵值表]
加入了 子列表添加() 命令。可以對 鍵值表 中的列表值,進行 添加值 的操作。
[1.7.34]
修復了URL處理中路徑包含中文和特殊符號等可能無法正確定位文件的問題。
存取列表 加入了 排序() 方法。具體查看[009 基礎對象測試]下的“列表排序”示例。可通過列表內容進行多種形式的排序。
存取鍵值表 加入了 子列表排序() 方法。作用等同于 列表.排序()。
WebSocket客戶端 加入了 置請求頭() 方法。可以設置連接到服務器之后提交給服務器的HTTP頭內容。
升級到最新版的易語言支持庫開發SDK。
[1.7.33]
修復了 URL 解碼時遇到的長度極值問題。之前的算法超過127位長度無法獲取參數數據。
[1.7.32]
修復了URLEncoded類型的表單提交時解碼的問題。
優化了內部流程中URL解碼部分的邏輯。
[1.7.31]
[ADODB數據庫連接池]
加入了 測試連接 方法。可以使用此方法測試指定數據庫是否能夠連接成功。
[存取鍵值表/存取列表]
JSON處理 修復了某些特殊文本(全角文本或字符)加載失敗的問題。
[請求對象]
修復了 取參數()/取所有參數() 中包含 http:// 等關鍵字的參數解析失敗的問題。
重構了URI解析算法。兼容性更好,效率更高。(實測平均每秒能夠處理2000萬次請求路徑)
[數據庫]
屏蔽了ADO查詢到分頁數據為空時,輸出的錯誤信息內容。
[1.7.29]
改進了 靜態編譯 機制。
* 無論是靜態編譯EXE還是DLL,都能正確釋放和調用原始庫(因為是偽靜態,機制等同于獨立編譯),不需要手動拷貝e2ee.fne到運行目錄。
* 優化了原始庫釋放和調用流程,只有在臨時目錄無法使用且不存在原始庫的情況下,才會釋放原始庫到運行目錄。
修復了 文件列表 功能可能引起的崩潰問題(第三只眼)。
* 網站打包加入后,通用獲取文件列表的接口遇到無后綴獲取的情況,會導致空指針構造對象失敗的問題。所有相關的文件和文件列表指令已經全部做了處理。
[1.7.28]
修復了 創建文本從時間 返回空白的問題(__{飛})
[1.7.27]
修復了線程池調用 URL編碼/URL解碼 可能會導致程序出錯的問題(感謝 小蝸牛)。此問題是因為URL編碼表延遲初始化引起。
修復了 通用緩存對象 使用內存時 設置過期時間失敗的問題(感謝 kko)。
服務器輔助 中加入 GZIP壓縮數據 和 GZIP解壓數據 命令。
服務器輔助 中加入 LZMA壓縮數據 和 LZMA解壓數據 命令。(7Zip算法)
加入了 打包網站 和 解包網站 功能。
加入了 E2EE網站打包工具v1.0 工具輔助軟件。
服務器加入了 服務器.讀入文件() / 服務器.讀入文本文件(),包括之前加入的 服務器.讀配置文件() 都支持從打包的虛擬磁盤系統中直接讀取文件內容。
優化了 WebSocket錯誤日志。防火墻等相關功能出現異常時,能直接輸出具體錯誤入口和問題用戶ip等信息。
建立了靜態庫自動構建流程,優化了靜態庫加載方案。新版的靜態編譯,E2EE庫只占用2.4MB的空間,體積更小(7Zip的LZMA算法)。通過易語言“靜態編譯”生成的程序,不會再在運行目錄釋放“E2EECore.dll”,而是自動根據版本號釋放到臨時目錄中。
[新增對象]
內存鏈接庫:可直接從內存加載和調用動態鏈接庫。
[1.7.20]
通用緩存對象的內存緩存重構為 內存池 技術。優化了LRU機制,早期更改的數據優先清理。
修復了默認404頁面未設置傳輸編碼造成的亂碼問題。
修復了鍵值表和列表在某些情況下字節集數據轉換文本可能產生崩潰的問題。
數據庫連接對象加入了 鎖定連接/解除鎖定。可以鎖定物理連接到當前連接對象。
數據庫分頁優化了分頁機制,不再需要提供統計數量統計語句。
數據庫分頁優化了獲取模板數據。模板數據中的分頁列表可限制固定分頁數量,自動追加分頁列表本身的翻頁內容。
重寫了解析Cookie算法。(因為一些人的錯誤怪罪到我頭上,白白重寫了一遍,新算法測試的比較充分)
設置Cookie允許使用整數文本做為秒鐘設置過期時間。如果過期時間為整數文本且大于0,則自動做為秒鐘格式化GMT時間賦值給Cookie。
進一步增強了自動編碼轉換的功能。
修復了 是否手機用戶() 判斷可能產生崩潰的問題。原因是HTTP頭不包含“User-Agent”時空指針調用引起的(yesit.cc)。
修復了 URL編碼 等轉換編碼時指定編碼無法轉換的情況導致程序崩潰的問題(小蝸牛)。
修復了 創建二維碼 參數錯誤時崩潰的問題(小蝸牛)。
加入了 文本編碼轉換() 命令。可使用 #文本編碼格式_ 開頭常量指定編碼格式。
[服務器]
加入 讀配置文件/寫配置文件 方法。可讀寫網站[配置]目錄下的文件。
[存取鍵值表]
加入 創建 方法。作用等同于 創建鍵值表(),執行本方法前數據會被清空。為了程序穩定性,建議盡量使用 創建 方法 替換 創建鍵值表() 函數。
修改 取鍵值表/取列表 為通過參數返回結果。(穩定性優化)
加入 表達式尋址操作。所有的數據讀寫可以使用JSON式路徑操作,具體格式為“//” + 表達式。列表索引從1開始。具體格式可以參考JSON尋址格式:http://www.w3school.com.cn/json/json_syntax.asp 。如果您的主鍵名本身以“//”開頭,請使用四個斜杠“////”做為起始來進行轉義。JSON路徑使用示例:
指向主鍵為“children”列表中的第一個元素://children[1]
其它示例://children[1].name;//cars.toyota.color;//jobs.tags[2]。
[存取列表]
加入 創建 方法。作用等同于 創建列表(),執行本方法前數據會被清空。為了程序穩定性,建議盡量使用 創建 方法 替換 創建列表() 函數。
修改 取鍵值表/取列表 為通過參數返回結果。(穩定性優化)
加入 表達式尋址操作。所有的數據讀寫可以使用JSON式路徑操作,表達式中的列表索引從1開始。具體格式可以參考JSON尋址格式:http://www.w3school.com.cn/json/json_syntax.asp 。
示例:
[1] :指向列表第一項
[1].name :指向列表第一項下的鍵值表,對應的主鍵為 name 的值
[2].cars.toyota.color
[3].jobs.tags[2]
加入 CSV 格式的支持。相關方法:到CSV/從CSV載入。支持多種參數的CSV解析和生成。
[模板]
過濾器新增加兩個命令:
HTML關鍵字編碼()
HTML關鍵字解碼()
[新增對象]
通用日志對象
XML文檔對象
通用線程池對象
網站客戶端
網頁內容解析器
加解密對象
?
[1.6.10]
? 改進了WebSocket客戶端。加入了wss的接口實現,將原始客戶通訊對象改為接口模式。
? 進一步優化了HTTP頭獲取用戶地址的功能。
[1.6.9.5]
修復了超長訪問地址寫入日志失敗造成的崩潰問題。
修復了通過HTTP頭獲取用戶地址失敗的問題。此問題間接造成防火墻無攔截等情況。
問題描述:配置了[真實IP請求頭]為X-Forwarded-For或X-Real-Ip時,從Nginx等反向代理軟件中產生的請求,無法響應防火墻事件且 請求.取用戶地址 為內網地址而非真實用戶IP。
加入了[E2EE通用服務模塊]。
* 將E2EE程序一句代碼改造為系統服務。
* 內置服務管理功能。可安裝、卸載、啟動和關閉服務。
[模板]
修復了“_下標”和“_奇偶數”變量失效的問題(感謝 輕描●淡寫~)。此問題是由目標模板編碼引起的。
修復了“增減”過濾器在循環嵌套等情況下賦值失敗的問題。此問題為變量作用域引起的。
[1.6.9.3]
模板編輯器升級到1.4。主要加入了變量搜索功能。
修復了模板編輯器無法加載資源的問題(感謝 劍俠情緣)。路由機制的優化跳過了編輯器模塊,這個版本已經加上了編輯器模塊。
[模板]
請求對象加入了 置模板渲染路徑/取模板渲染路徑。能夠針對本次請求重置渲染模板文件。
[請求]
加入了判斷請求是否來自手機的判斷方法:請求.是否手機用戶。
網站配置項加入了“手機UA表達式”配置項,可用來配置用于檢測請求User-Agent的正則表達式。
[1.6.9.2]
修復了上個版本的路由機制問題(感謝 yes or no)。
問題描述:由于以前版本的路由路徑為兼容正則表達式等,對路徑做過預處理,導致在新的路由尋址機制中,包含“.”等的固定網址格式無法正確匹配,會導致請求這些路徑時返回404錯誤。
修復了超過2G文件下載失敗的情況(感謝 被封七號)。原因是文件尺寸超過整數最大值造成文件體積輸出失敗。
修復了郵件發送賬號或密碼為空導致的崩潰問題(感謝 心宇)。
完全兼容Apache的日志格式。可直接使用Apache日志分析工具對E2EE中的請求日志做分析處理。
[1.6.9]
重構了路由尋址機制。根據路由地址區分模塊、域名、直接地址 和 正則,效率更高。
重寫了GZip壓縮算法。效率更高。
上傳文件信息狀態增加了“無上傳文件”狀態。
上傳文件信息狀態碼為常量 #上傳代碼_無上傳文件 時表示表單沒有選擇文件。
修復了多文件上傳的問題(感謝[yes or no])。
原始問題表現為,在提交包含多文件的上傳表單時,如果某些文件表單沒有選擇要上傳的文件,可能會造成其他文件也上傳失敗。
修復了大文件在斷點續傳和瀏覽器下載等可能出現失敗的情況(感謝 被封七號)。
具體癥狀使用迅雷下載無法順利下載文件,或者使用chrome下載時總是卡住的情況。具體原因為流對象無阻塞時被忽略的情況。
[模板]
修復了模板數值判斷永遠失敗的問題。可以進行準確的數值和變量判斷運算。
[1.6.8]
加入通用日志對象(SoIdea)。
[通用日志對象]
多線程安全。
支持同時使用多日志適配器。可同時輸出日志到控制臺,易語言調試窗口,文件。
支持自定義日志格式。
支持的適配器類型:
* 文件適配器
* 回滾文件適配器
* Syslog適配器
* 系統日志適配器
* 調試日志適配器
* 易語言日志適配器
* 控制臺適配器
支持日志輸出類型:
* 信息日志
* 警告日志
* 錯誤日志
[模板]
加入了多條件支持。(碧水晾夏)
條件標簽支持且或。
{{?a==b || a==c}}內容{{/a}}
{{?a==b && b==c}}內容{{/a}}
加入了過濾器支持。具體使用方式可以參考:http://www.jimstone.com.cn/e2ee/docs/ 的[模板和渲染]章節
使用方法:
{{標簽 | 過濾函數([參數])}}
函數列表:
賦值([值內容])
增減([數量])
小數格式化([小數數量])
貨幣格式化([貨幣前綴])
時間格式化([格式化文本])
[存取鍵值表/存取列表]
修復了上個版本的JSON輸出日期時間為空導致數據出錯的問題。
[Cookie]
加入了Cookie設置時鍵值表多值的支持(yes or no)。允許一次設置多條Cookie項。
[請求]
加入了取所有請求頭方法(海綿寶寶)。請求.取所有請求頭()
[ADODB數據庫連接]
優化了查詢到自定義(碧水晾夏)。查詢失敗時清空自定義數據。
[1.6.7]
[服務器]
修復了路由并發時的函數調用引起的崩潰問題。
優化了路由最后一個級別的尋址,不會把網址中最后一個級別的變量定義,包含“/”的內容帶進來了。
優化了編碼自動轉換部分。編碼轉換更加智能,指定編碼轉換失敗時,編碼系統會自動偵測編碼類型,并且根據偵測結果做自動轉換。
加入 是否運行() 方法可以判斷服務器是否正在運行中。
[存取鍵值表/存取列表]
序列化和反序列化加入了長度和CRC自校驗機制。
影響方法 存取鍵值表/存取列表 方法:
到字節集
從字節集載入
到Base64
從Base64載入
鍵值表加入 到表單文本() 方法。可將鍵值表直接生成請求用的表單文本
重寫了JSON算法。JSON處理效率更高。實際測試應該是目前易語言所有JSON模塊和支持庫里效率最高的,鍵值表和列表具有原生JSON對象的序列和反序列化效率。
[郵件發送客戶端]
加入內容分塊模式(Multipart)的設置。該屬性默認為真。發送的郵件內容能夠指定是否以分塊模式發送。對應的方法:
置分塊模式
取分塊模式
[1.6.6]
加入了多域名支持。使用方式:服務器.加載模塊() 時[掛在路徑]參數為 http://打頭即可,例如:http://www.jimstone.com.cn/。(小蝸牛,謝友,碧水涼夏,SoIdea)
修復了多級容器時“_模塊路徑”變量不正確的問題。之前只關聯到最后兩個級別的相對路徑。
修復了 目錄列表 中的目錄路徑。之前的目錄路徑尾部不帶“/”,會出現訪問目錄中的默認首頁等文件時,頁面文件加載失敗的情況。(第三只眼)
加入了日志系統的英文名稱日志文件名的支持。在英文風格時,日志文件名將自動使用英文命名。(子涵)
加入了 郵件發送客戶端 對象。可發送HTML類型郵件,支持SMTP(s)-TLS類型的郵件發送,支持附件、別名 和 多收件人抄送人等功能。
[Session]
加入了把Session同步到Cookie的功能。使用方法,在配置中加入邏輯配置項:SESSION啟用COOKIE同步。(KKO)
優化了 Session自動續約機制。超過3分鐘后請求讀取過Session網頁時,會自動執行Session續約。
修復了Session過期時間不準確的問題。(謝友)
[通用緩存對象]
修復了內存過期后,使用 是否存在() 命令時依然返回真的問題。(謝友)
[模板]
模板編輯器變量等加入了“搜索”功能。(子涵)
修復了視圖函數不存在模板文件而在全局函數中渲染崩潰的問題。(KKO)
修復了模板中引入多級文件時,引入文件不存在卡死的問題。(KKO)
修復只有一個字符等情況下渲染為空的情況。
[存取鍵值表/存取列表]
加入了JSON解析UNICODE的支持。可解析帶\u的文本數據,并且自動轉碼。(SoIdea)
加入了 列表.取子列表() 功能 。能獲取列表范圍內的數據為新的列表。
修復了非字節集類型數據時調用 取字節集() 出錯的問題。非字節集數據會被自動轉換為文本型數據并返回文本轉字節集之后的數據。(BrokenHeart)
[郵件發送客戶端] (小蝸牛、心宇)
加入了 郵件發送客戶端 對象。
兼容SMTP和SMTP(s)發送TLS類型的郵件。
支持附件功能。
支持HTML功能。
支持郵箱別名和多收件人、抄送人 和 密送人。
支持郵件回執功能。
[WebSocket]
服務端加入了 取請求路徑 和 取請求頭 方法。可獲取原始HTTP中的 路徑 和 請求頭 數據。(碧水涼夏)
[示例]
修復了 留言本 默認Session機制為Memcached從而造成項目訪問緩慢的問題。已將默認配置改為使用文件內存。(子涵)
[1.6] 更新說明
[網站服務器]
重寫了 URL編碼 和 URL解碼 算法,效率提高了10倍。感謝 被封七號 提供的建議。新算法建立編解碼索引表。對編碼和不需要編碼部分分別處理。
修復停止服務器可能會崩潰的問題。
修復服務器釋放可能會崩潰的問題。
重構HTTP解析Multipart解析算法,解決Multipart類型內容過短無解析的問題。
修改日志系統 服務器.初始化() 之后便可正常使用。
加入Nginx等自定義地址列表獲取原始客戶IP地址的機制。能夠獲取Nginx等反向代理服務器中原始的用戶地址信息。
加入了網站防火墻功能。防火墻為基礎IP訪問策略限制,能夠有效防止普通的DDOS和CC攻擊。可在[控制中心]中設置。
加入動態請求緩存機制。可對路由地址配置緩存機制。
加入靜態文件請求緩存機制。可配置靜態文件緩存時間和緩存內存大小。
重構了 Session系統,同時支持文件內存和Memcached。在多進程同端口時,結束第一個進程,第二個進程將共享被結束進程的Session信息。
優化了日志顯示格式。
修復訪問靜態目錄不帶“/”時跳轉404的問題。
修復訪問模塊不帶“/”時自動匹配模塊默認路徑。例如:http://localhost/api 則 跳轉到 api 模塊對應的處理函數中。
修復 響應.取SessionID 命令。
加入文件上傳限制。當文件超過尺寸或停用上傳功能時,文件將不會寫入磁盤。
加入了IPv6支持。綁定任意端口*時,加入[啟用IPv6]配置就能通過IPv6啟動網站,同時兼容IPv4。
優化了404返回。文件不存在時直接返回404頁面內容而不做404請求的跳轉。
加入了 請求.取線程句柄() 能過獲取當前請求處理所在虛擬線程句柄。虛擬線程句柄從1開始,最大為您服務器的線程數設置。
加入了 網站服務器.取線程數量() 。在服務器啟動后才能獲取到真實線程數。
修復了緩存命中等情況下設置靜態文件緩存時間的問題。文件過期檢測時間靜態文件是都會響應到。
修復了緩存對象取數據出現的內存未被回收的問題。此問題可能造成使用內存緩存對象,取數據時內存不停的緩慢增長。
加入 所有請求、靜態文件、404等情況下自定義(預)處理。
使用方法:在訂閱視圖函數的路徑參數中,使用 #請求地址變量_ 開頭的常量。對應的視圖函數返回“真”則表示請求已經處理,不再執行原始默認函數。
網站.訂閱視圖函數 (&視圖_所有請求, #請求地址變量_所有請求, , )
網站.訂閱視圖函數 (&視圖_靜態請求, #請求地址變量_靜態文件, , )
網站.訂閱視圖函數 (&視圖_頁面404, #請求地址變量_頁面404, , )
優化了上傳文件管理機制。當上傳的文件未被使用時(未移動文件),在請求處理完成后將自動刪除未使用的文件。
上傳加入了 請求.取請求文件信息() 。可以獲取上傳文件的詳細信息。
完善了上傳文件信息。取所有上傳文件() 和 取上傳文件信息() 返回的內容中增加了 狀態、代碼 和 錯誤原因。
加入了 #上傳主鍵_ 和 #上傳代碼_ 常量。
加入了防火墻事件和防火墻命令。防火墻事件在[網站服務器]和[WebSocket服務器]中通過“訂閱防火墻事件”注冊。網站服務器加入了“防火墻_拉黑用戶”、“防火墻_取消拉黑”和“防火墻_是否拉黑”三個防火墻命令。
模板加入了session標簽的注入。可直接在模板中使用 {{ _SESSION.名稱 }} 進行變量注入
加入了 請求.屬性表 注入到模板的功能。無論是否有渲染數據,在執行渲染時 請求 的屬性表 都會被寫入到模板中。
修復了無法接收JSON類型的數據的問題。現在可以正常接收POST的JSON數據。
修復了請求.取原始數據為空的問題。可獲取提交的原始數據。
修復了GZIP壓縮的問題。所有動態靜態請求均正確響應動態GZIP壓縮設置。
修復了靜態文件緩存過期時間未正確響應的問題。靜態文件緩存更新檢測周期能夠準確匹配設置。
加入了 服務器.取目錄()/服務器.取文件路徑()/服務器.移動文件() 三個服務器文件和路徑處理方法。在上傳等環境下使用更加方便。
修復了模板編碼轉換長度計算引起的網頁生成不全的問題。
[存取鍵值表]
加入了二進制和文本序列化方法:加入 到字節集、從字節集載入、到Base64 和 從Base64載入 方法。
加入了 主鍵更名() 方法。可對鍵值表批量更改主鍵名稱。
加入了 鍵值互換() 方法。可生成鍵值互換之后的新鍵值表。
[存取列表]
加入了二進制和文本序列化方法:加入 到字節集、從字節集載入、到Base64 和 從Base64載入 方法。
加入了 連接文本() 方法。可將當前列表直接通過連接文本輸出為字符串。可以像 PHP 的 array().join(",")一樣的方式連接列表所有條目。
加入了 主鍵更名() 方法。可對列表中的鍵值表直接批量更改主鍵名稱。
[模板引擎]
重構模板引擎條件判斷算法實現了 大于、小于、大于等于、小于等于等條件判斷。
優化模板重載機制和模板渲染效率。模板渲染能夠達到每秒5到10萬次以上渲染次數。
修復了文件列表功能的支持。
修復模板編輯器的支持。
[對象映射中心]
修復ORM映射時內存申請尺寸的問題。在運行模式時某些情況下轉換鍵值表到自定義數據結構,會導致程序掛掉,已徹底修復。
加入了對象映射多別名的支持。允許給字段名添加多個名稱,同一個對象同時適用于從自定義名稱表單項創建和映射到數據庫對應字段。
[ADODB數據庫連接池]
處理了連接池創建時沒有映射中心會阻塞的問題。
連接池加入了[用戶名]、[密碼]、[是否UNICODE]和[連接初始化SQL]參數。
* [用戶名]/[密碼] 用于連接文本外設置用戶名和密碼
* [是否UNICODE] 用于所有的帶參數SQL中的文本,用來確定是否為寬字符集存儲(針對UTF8/UNICODE等字符集)
* [連接初始化SQL] 數據庫連接創建成功后將自動執行此SQL
加入了數據庫連接池超時重連機制。能夠避免MySQL服務器超時,自動設置連接為sleep,從而無法在ADO連接中獲取真實連接狀態的問題。默認連接閑置時間超過1小時將自動釋放連接。
修復了ADO連接池在未獲得連接字符串的情況下初始化的池連接,可能造成的潛在偶然性崩潰問題。
加入了 ADO連接池 初始化時的連接檢測。如果初始化時模板連接對象訪問數據庫失敗,則連接池創建失敗。
連接池加入了關鍵字符號的支持。不支持的數據庫類型可自定義關鍵字符號。自定義關鍵字使用方式:ADODB數據庫連接池.配置關鍵字符號 (“[”, “]”)
[ADODB數據庫連接]
修復數據庫操作中雙精度小數和寬文本轉換的問題。
優化了 ADO連接.執行(),加入了[更新行數]參數,能夠獲取實際數據更新的行數數量。
優化了 ADO連接查詢和執行結果的判斷處理。
加入了 ADO連接.查詢() 增加了“字段信息”變量參數。只要SQL查詢語句正確,無論是否存在值,都可以返回字段的名稱和類型信息。
[WebSocket服務器]
加入了WebSocket服務器。
* 全面支持 RFC6455 規范
* 支持訂閱通道和組播
* 支持給客戶綁定任意屬性
* 支持TLS(WSS)
* 線程安全
!!!由于現有的HTTP服務器沒有實現HTTP2和多幀處理,所以暫時無法通過HTTP協議升級方式使用和HTTP服務器相同的端口,必須開啟獨立的WebSocket服務器端口。
加入了WebSocket防火墻功能。
優化了 WebSocket服務器 對象。修復了__stdcall引起的特殊場景下調用子程序錯誤的問題。修復了對象釋放和服務器 停止() 方法等引起的問題。
[WebSocket客戶端]
加入了 WebSocket客戶端。全面支持 RFC6455 規范。
[通用緩存對象]
加入緩存接口和內存緩存的實現。
[全文索引引擎/全文索引文檔]
加入了全文索引引擎的支持。支持Solr的常用操作和查詢。
[數據驗證器]
加入了驗證器對象。可以用于數據驗證表單驗證等場景。
[文本過濾器]
加入了 文本過濾器 對象。可以進行文本批量替換或者非法關鍵字過濾等場景。
[示例項目]
新增示例:
加入WebSocket在線聊天室示例。
* 支持多房間
* 加入 在線用戶數和用戶列表 顯示
* 加入 @用戶 功能
* 加入 用戶退出 消息推送
* 修復了不同用戶同名時當前用戶高亮色相同的問題
* 加入聊天記錄持久化存儲
加入HTTPS服務器(SSL)示例項目。
加入文件列表示例項目。
加入了 通用緩存對象 和 使用測試示例。通用緩存對象支持 內存緩存 和 Memcached分布式緩存。
[JimStoneCMS 和 調用示例]
加入了MySQL版本的支持。可在MySQL和SQLite之間無縫切換。
[對象工廠]
修復 創建列表() 函數文本參數內存被覆蓋的問題。
修復 創建列表/創建鍵值對() 雙精度小數和日期時間型類型無法匹配的問題。
加入了 創建驗證碼圖像()功能。可以生成較復雜的驗證碼圖片,適合大部分需要驗證碼的場景。普通的I7電腦上處理能力大概每秒能生成1100次左右的驗證碼圖片。
加入了 創建驗證碼文本() 功能。可通過模板生成任意半角字符組成的任意長度驗證碼。
修復了創建鍵值表的潛在邏輯問題。在創建某些鍵值對失敗時不會再出現崩潰的問題。
加入創建二維碼和驗證碼的示例。
加入了 創建GUID文本() 函數可生成標準的UUID/GUID。
修復了創建文本()某些場景下出現亂碼的問題。優化了效率輸出文本更快。
[路徑處理]
加入了 路徑處理相關函數。支持針對路徑和文件的各種處理和常規操作。
* 路徑合并
* 路徑取名稱
* 路徑取后綴名
* 路徑取上級路徑
* 路徑取上級名稱
* 路徑是否為文件
* 路徑是否為目錄
* 路徑格式化
* 路徑復制目錄
* 路徑是否絕對路徑
* 路徑是否屬于目錄
* 路徑取目錄列表
* 路徑取文件列表
* 路徑取所有文件
* 路徑創建多級目錄
[其它]
加入了靜態編譯的支持(偽靜態)。
合并個人版和高級版。E2EE將只保留一個版本。
加入了“請求頭_”、“響應頭_”、“配置項_”、“英請求頭_”、“英響應頭_”開頭的五種類型的常量。
修復了隨機數在同一秒內某些情況下產生重復的問題。影響主要為 創建驗證碼文本() 在循環等環境下會出現重復的問題。
修復了長時間運行時忽然替換新版本產生的崩潰問題。
[1.3]
模板編輯器:
優化模板編輯器運行機制。編輯器運行周期不依賴于服務器的重啟。
加入快捷鍵(快捷鍵說明請參考官方文檔)
加入服務器配置、請求參數和Cookies動態注入為模板變量的功能
加入編輯模式瀏覽器自動切換功能。通過修改服務器.置編輯模式 的狀態更改,瀏覽器會自動切換到編輯/正常運行模式。(可在編輯器配置中關閉此功能)
加入編輯器配置。
編輯器允許手動更改效果渲染視圖更新周期。
加入SQL存儲過程動態傳參:
所有數據庫查詢和執行的第二個參數更改為參數變量。相關的參數引用請往后做偏移處理(第二個參數前加個“,”)。
SQL參數可綁定數據類型。
加入“寬文本型”參數綁定。
加入快速SQL功能:
模板編輯器中可直接將SQL綁定到模板,SQL參數可直接注入為所有模板支持的相關變量。
模板功能:
修復條件判斷中“!”開頭的標簽配對問題,允許使用取反{{?!變量}}{{/變量}}做條件判斷。
加入變量和變量的等于判斷。
優化 請求.取請求路徑 命令加入[是否包含參數]參數。
修復 數據庫連接.查詢頭條到自定義 命令。
數據庫分頁對象加入 取分頁數據到模板格式() 方法。主要是方便生成統一格式的分頁結果便于模板中使用。
重構了ORM對象映射保存機制。ORM加入寬文本支持。
服務器 對象加入 是否編輯模式 和 置編輯模式。隨時在編輯和最終效果之間切換。
修復 ORM中邏輯型尺寸計算。
修復視圖訂閱標簽檢測問題。
SESSION保存機制優化為完成業務處理后統一保存。
重構了 MULTIPART 解析。
加入了 JSON/XML 等格式POST提交的支持。JSON會被自動映射為參數。
加入了 URL編碼/解碼的支持。詳情見 請求.URL編碼/URL解碼 或 URL編碼/URL解碼。支持自定義編碼格式。
加入了 時間和文本互轉函數。命令 創建文本從時間/創建時間從文本。
修復了 ORM映射和數據庫處理中的日期時間型轉換格式混亂的問題。
加入了 請求.取發送數據 命令,可以獲取用戶發送的原始POST數據。
加入了 JimStoneCMS 內容管理系統。可用于正式項目使用。
[1.2]
加入模板編輯器
加入服務器編輯模式(使用 服務器.啟動()第二個參數為真是開啟編輯模式)
加入創建文本函數
加入創建二維碼函數
加入日志監視工具1.0