相簿沒法留言了

突然發現的

我要成為幸運的一般會社員

真是非常抱歉。現在已經修正好了,請再試用看看。

🍎insoler社群網站CEO、兼站長兼顧問兼工程師

但是現在文章發表後不會提示了,一下子會一直發

我要成為幸運的一般會社員

真是非常不好意思,你在上個月提到的問題,雖然某阿光也有抱怨類似的問題,但其實我一直找不到問題點!我不知道為什麼某些文章發表「送出」的時候,「有時候」海豚系統會沒有反應?所謂「有時候」的意思是,並不是每次都會有問題!而是有時候會遇到,有時候卻完全沒問題!

我測試、比較過其他的瀏覽器,問題似乎不是出在瀏覽器本身。因為情況都差不多。

最後只好花時間計算討論區、資料庫的處理時間。看看到底是哪一段程式碼會需要花很長的時間?追查很久以後,最後找到是在BxDolDNSBlacklists.php這個程式的gethostbyname這個PHP函式!

就算找到問題是出在gethostbyname這個PHP函式,但不知道是什麼原因引起的?因為我已經很久都沒有修改海豚原始碼,原廠也沒有新的版本,而打算在明年就放棄整個海豚系統。以前沒有問題,為什麼最近... 至少是這幾個月才會遇到問題?

所以寫了一段非常簡單的PHP測試程式來測試gethostbyname取得IP位址要花多少時間?

$time_start = microtime(true);
$url1 = 'www. insoler .com';
$ip1 = gethostbyname($url1);
$time1 = microtime(true) - $time_start;

$time_start = microtime(true);
$url2 = 'youtube.com.multi.surbl.org.';
$ip2 = gethostbyname($url2);
$time2 = microtime(true) - $time_start;

答案就跟討論區一樣「不一定」!並不是每次都會花很長的時間,也有非常快就得到答案。其中url2的網址並不存在,這是海豚內建的搜尋網址,我不知道為什麼海豚要去搜尋一個不存在的網址?但gethostbyname這個動作有時候會導致Timeout,要等30秒才會回報找不到網址的錯誤!但有時候會在非常短的0.00x秒以內就回報錯誤!

回到BxDolDNSBlacklists.php這個程式,光看檔案名稱就可以知道,這是用來封鎖特定IP的程式,由於insoler幾乎不會有人跑來註冊新的帳號,因此我完全不需要封鎖IP、網址!事實上insoler從一開始到現在都沒有使用「黑名單」的封鎖功能,因此最簡單的辦法,就是在管理網頁關閉「黑名單」的封鎖功能,並且在BxDolDNSBlacklists.php裡面加上註解,不執行gethostbyname函式。

然後觀察了將近2個禮拜,某阿光說看起來應該是恢復正常。

因為我沒有修改過BxDolDNSBlacklists.php程式,也沒有關閉「黑名單」封鎖功能(雖然我沒有使用)。但真正的問題是...以前沒有問題,為什麼最近才有?

完全沒有改過海豚程式碼,卻會出問題。只能猜想,我唯一有做的改變是升級macOS系統版本到目前最新的版本(現在是macOS 13.0.1)以及升級PHP版本到7.4.30(最新版是7.4.33)。

到底是哪一個出問題?不知道。如果有其他類似PHP的gethostbyname指令,可以交互比較,就很容易理解。如果其他類似gethostbyname的指令也一樣會有...不知道什麼時候會Timeout的話,那就可以確定問題是出在升級macOS系統。因為macOS與PHP都升級版本,所以很難知道問題出在哪裡?

但就算不知道問題出在哪也沒關係,反正我不使用「黑名單」的封鎖功能,BxDolDNSBlacklists.php對我來說不重要,只要不使用gethostbyname就沒問題了。

新的UNA系統複雜,我還要花更多時間研究,短時間內很難升級,insoler必須持續海豚一段時間。

請再試試看。應該是可以正常使用。

🍎insoler社群網站CEO、兼站長兼顧問兼工程師

我技能線放棄去點Web了smiley-tongue-out.gif再者現在controller用的比較多的是Java springsmiley-yell.gif

gethostname()大概是安全更新避免污染本機的cachesmiley-think.gif設定個本地dns可解smiley-tongue-out.gif

我要成為幸運的一般會社員

謝謝你的建議。其實早在2000年的BNW時代,我一開始架設網站就是使用Mac OS X Server架設內部專用的DNS Server。由於Mac OS X Server停產,蘋果已經不再提供macOS Server版,所以改用Firewall防火牆上內建的DNS Server。

也因此insoler網站、內部電腦主機全部都是使用內部的DNS Server。這是真實的DNS畫面,你可以看到Primary DNS、Secondary DNS都固定指向在Gateway Server,也就是Firewall。

insoler伺服器主機也升級到macOS 13.0.1以後,再重新測試我寫的gethostbyname測試程式,就沒有遇到會Timeout逾時的問題!因此這個問題應該是macOS 13引起的。不過,我不使用「黑名單」功能,因此還是維持關閉gethostbyname程式碼,這樣可以確保以後就算升級macOS版本如果又會遇到DNS問題,網站應該也不會出問題。

然後順便升級PHP到目前的最新版本PHP 7.4.33。由於PHP 8的差異較大,老舊的海豚需要修改很多程式碼,也只能得到相同的功能,沒有升級的意義,所以就停留在PHP 7.4。另外一個無法升級的是TinyMCE。最新的TinyMCE 6.2因為不再使用jquery,會導致海豚無法正常運作,只能停留在舊的最新版TinyMCE 5.10.6。

資料庫則是目前最新的MySQL 8.0.31。除了TinyMCE其他全部都是使用目前最新的版本。

🍎insoler社群網站CEO、兼站長兼顧問兼工程師

另外考慮到本站Apple派為主smiley-laughing.gif建議以後不要生JPEG圖像了smiley-yell.gif

用WebP或者AVIF比較好smiley-think.gif壓縮比高smiley-clap.gif

我要成為幸運的一般會社員

非常感謝你的建議,我會在新的UNA系統裡面嘗試看看,但是不會在目前的海豚來增加新的功能。因為事實上,有人早就抱怨海豚不能在PHP 8.x上面跑,也沒有在2023年底以前持續升級版本。

PHP 7.4 goes EOL 28 November

Boonex promised "Dolphin 7.x will be supported and maintained until December 2023."  However, they have not kept that promise.  There are several reported bugs; along with the fixes, in the 7.4.2 release and Boonex refuses to release an update with those bugs fixed.  I doubt they care if we can run Dolphin on PHP 8.x or not.

幾個月後,沒有任何人回應!一個已經不再繼續升級、維護的老舊系統,我也沒有想要自行繼續增加功能的動力。

在升級macOS 13.1以後我再測試一次相同的PHP程式碼,得到的結果是:

執行 gethostbyname 查詢 IP 位址指令 30 次。

第 1 次執行 gethostbyname 查詢 IP 位址指令的結果:
www .insoler.com=www .insoler.com
www .insoler.com 查詢的執行時間:30.001041173935

youtube.com.multi.surbl.org.=youtube.com.multi.surbl.org.
youtube.com.multi.surbl.org. 查詢的執行時間:30.001340866089

www .apple.com=www .apple.com
www .apple.com 查詢的執行時間:30.001801967621

執行 gethostbyname 查詢 IP 位址指令總計 1 次。
PHP 的執行時間:90.004201889038

🍎insoler社群網站CEO、兼站長兼顧問兼工程師