2012-03-21 60 views
0

在編輯MediaWiki的一個特定頁面之後,是否可以觸發某種信號或配置鉤子(例如,執行定義/硬編碼的shell腳本)?如何在編輯特定頁面時觸發信號/鉤子?

該場景如下。
到目前爲止,每次請求RSS提要時,都會從一個特定MediaWiki頁面的內容(稱爲wiki/index.php?title=News)生成RSS提要。由於此頁面僅在幾天內編輯一次,因此在服務器負載方面,使用Perl :: CGI或PHP腳本作爲RSS源的來源(例如,供稿閱讀器的URL:example.com/rss-feed.php)應該更好一些。該腳本僅在Wiki頁面被編輯時生成靜態RSS源(例如,在example.com/rss.xml)。

注:
我談論的wiki頁面被保護,只有受信任的用戶可以對其進行編輯。在上述建議的工作流程中,我無法考慮安全問題。我很高興得到其他的說服。

回答

1

當然,完全有可能。

ArticleSaveComplete hook$article參數包含剛剛保存的文章的標題和名稱空間(具體而言,您要訪問$article->mTitle的屬性)。

只需使用if語句定義一個函數,如果標題(和名稱空間!)與給定數據不匹配,該語句只會返回true。如果它們匹配,它會生成你需要的靜態文件。

MediaWiki Hooks manual page有一些例子和關於鉤子是如何工作的,以及如何去編寫一個新的函數來處理特定的鉤子。這就是說,我真的建議你考慮放棄這個想法,除非你真的看到不利的性能影響你的機器。在正常配置下,MediaWiki應該使用分析器緩存來處理像這樣的查詢的最負載密集型操作。

+0

謝謝你的回答。正如你所說,我會放棄這個想法。我上面提到的Perl腳本非常快,並且不會導致大量的負載。我結束了使用運行該腳本的每小時cron作業。 – 2012-03-27 13:13:44

相關問題