2012年8月13日 星期一

解決 Codeigniter-Smarty 與 Discuz X 2.5 相衝突的問題.


origin: https://github.com/QueenbyeR/blog-text/blob/master/%E8%A7%A3%E6%B1%BA%20Codeigniter-Smarty%20%E8%88%87%20Discuz%20X%202.5%20%E7%9B%B8%E8%A1%9D%E7%AA%81%E7%9A%84%E5%95%8F%E9%A1%8C/page-001.md


目錄環境

  • PHP 5.4
  • Apache 2.2
  • CodeIgniter 2.1.2
  • CodeIgniter-Smarty
  • Discuz X2.5 (2012年4月7日繁體中文UTF8)
  • CodeIgniter 在 /
  • Discuz 在 /bbs/ (程式碼會因路徑而稍微有所不同)

問題

使用 Smarty 時,在各別樣版首次執行時,\smarty_compile_dir 內若無已存在的樣版的話,會造成以下錯誤:
Discuz! System Error
Oops! System file lost: class/smarty/smarty_internal_templatecompilerbase.php

解決

打開 \www\bbs\source\class\class_core.php
找到 throw new Exception('Oops! System file lost: '.$filename);
在前一行加入
    if ( ! strpos($_SERVER['REQUEST_URI'], 'bbs') ) return true;

2012年8月1日 星期三

xampp 1.8 之中的 db 連接變得很慢?

origin: https://github.com/QueenbyeR/blog-text/blob/master/xampp%201.8%20%E4%B9%8B%E4%B8%AD%E7%9A%84%20db%20%E9%80%A3%E6%8E%A5%E8%AE%8A%E5%BE%97%E5%BE%88%E6%85%A2%EF%BC%9F/page-001.md



xampp1.8控制台
今天把xampp一口氣換到了版本 1.8,但是 db 的 curd 操作,卻變得異常的緩慢,光是5個queries,就使得頁面等了3秒才渲染完成。
抽絲剝繭後發現,若將 $db['hostname'] = 'localhost'; 改為 $db['hostname'] = '127.0.0.1'; 情況可獲得改善,但仍有1秒的等待時間;這匙實在不合理啊,我的伺服器可是本地端的呀,這不能忍。
果然又拜 GOOGLE 大神所賜,終於在這篇文章之中找到了解決方法。
造成此種情況的主因就是 IPv6 這東西;然而由於我所開發的專案,都用不上 IPv6,所以直接透過微軟所提供的fix關閉 IPv6 就恢復正常了。
關閉後,執行時間由1秒,恢復到正常的0.1秒。