前言:
由於pLog 0.32效能太差,儘管調校了mysql等治標的方法,最後在db連線數及主機記憶體仍負荷不了,幾度想要廢服務。但想到mark那麼用心推廣plog,我不能成為pLog社群的失敗例子,因此決定冒然升級為1.0Beta(總比服務暫停好)。
步驟:
1.抓取最新的plog-dev版本(如0318),並進行初次安裝,了解一下plog 1.0的運作設定差異(table數=25)。
2.發現官方plog 1.0 template升級,我最喜歡grey這模版,因為簡單。但grey很醜又不能隨lcd解析度變化(常版塊擠得不像樣),因此改了css及template細微地方,你可在下列網址抓取我改的結果:
http://dabu.twbbs.org/plog/index.php?blogId=13.備份0.32 db(table數=24)。,升級第一次的升級(update),結果出現:
Error creating table: Table 'plog_article_categories_link' already exists
Error creating table: Table 'plog_custom_fields_definition' already exists
Error creating table: Table 'plog_custom_fields_values' already exists
Error creating table: Table 'plog_articles_text' already exists
Error modifying table Articles: Duplicate key name 'blog_id_slug_category_id'
Error modifying table Article Categories: Duplicate key name 'mangled_name'
Error modifying table User Comments: Duplicate key name 'article_id'
Error modifying table Notifications: Duplicate key name 'blog_id'
Error modifying table Blogs: Duplicate key name 'mangled_blog'
name 'user_id_permission_id'
原來是之前為0.32 db加上index的原因,用下列語法來解除index:
ALTER TABLE plog_articles DROP INDEX num_reads, DROP INDEX category_id, DROP INDEX blog_id, DROP INDEX user_id;
ALTER TABLE plog_articles_categories DROP INDEX blog_id;
ALTER TABLE plog_articles_comments DROP INDEX parent_id, DROP INDEX article_id;
ALTER TABLE plog_articles_notifications DROP INDEX article_id, DROP INDEX user_id, DROP INDEX blog_id;
ALTER TABLE plog_bayesian_filter_info DROP INDEX blog_id; ALTER TABLE plog_bayesian_tokens DROP INDEX blog_id;
ALTER TABLE plog_blogs DROP INDEX owner_id;
ALTER TABLE plog_filtered_content DROP INDEX blog_id;
ALTER TABLE plog_gallery_albums DROP INDEX parent_id, DROP INDEX owner_id;
ALTER TABLE plog_gallery_resources DROP INDEX album_id, DROP INDEX owner_id;
ALTER TABLE plog_host_blocking_rules DROP INDEX blog_id;
ALTER TABLE plog_mylinks DROP INDEX blog_id, DROP INDEX category_id;
ALTER TABLE plog_mylinks_categories DROP INDEX blog_id;
ALTER TABLE plog_myrecent DROP INDEX blog_id, DROP INDEX category_id, DROP INDEX user_id;
ALTER TABLE plog_myrecent_categories DROP INDEX blog_id;
ALTER TABLE plog_referers DROP INDEX blog_id, DROP INDEX article_id;
ALTER TABLE plog_trackbacks DROP INDEX article_id;
ALTER TABLE plog_users_permissions DROP INDEX blog_id, DROP INDEX user_id, DROP INDEX permission_id;
4. 進入資料庫升級階段,它叫我等一回,但我等了10分鐘還沒動作,被騙了><
之前就看到一次處理500文章數的文章,我想問題可能出現在wizard.php
搜尋:
define( "WIZARD_MAX_RECORDS_PER_STEP", 500);
define( "WIZARD_MAX_RECORDS_THRESHOLD", 1000);
第二行是主因,因我的原db文章超過1000,這兩行我改了100及999999
5.再還原去除index之後的db,重跑一次,順利升級!! (感動!)
(table數=28)。
6.將0.32的gallery/目錄overwrite 1.0的。
7.進入管理介面,在原db相同設定下(url等等),設定值幾乎不用調。我把重點放在頁面快取(cache),在確定模版不會更改下(被效能拖怕了),切換至:
管理面版 » Dabu/Blog網誌 » 全部站台管控 » 模版設定
設定以下的值:
template_compile_check = false
停用此功能時,Smarty只有在模版有更改時才會重新產生頁面。停用此功能可以提高系統效能。(更改模版時要重置一下)
template_cache_enabled = true
啟用模版快取功能。啟用此功能,快取的版本將會持續被使用,而不需要對資料庫進行資料存取的動作。
template_cache_lifetime = -1
快取存活時間(單位:秒).設為-1快取將永不過期,或設為0來關閉快取功能。
template_http_cache_enabled = true
是否啟用對HTTP連結要求的快取支援。啟用此功能pLog只會傳送必要的內容,可以節省網路頻寬。
8.user要面對的是模板(template),因為策略上要改濾,前版本我採用mark的最新回響/訪客統計之plugin,也採用reic的menu影子,但在beta下一方面可能有bug或常需要更動php,且對1.0 plugin不了解(也沒測試),而且版本間的差異與模版的契合度也是個問題,因此正式版前暫且不加進去(但會去實驗測試)。
結論:
以上是我的升級經驗,雖然很雜,但透露的訊息也有些小用處啦。至目前,我尚未觀察主機的記憶體使用度及db連線數狀態,希望plog 1.0能解決之前的效能困境。