2015-07-10 68 views
2

什麼是檢測文件的簡單方法已更改並自動更新?什麼是檢測文件的簡單方法已更改並自動更新?

例如,如果我有一個剛剛上傳的js/css文件,我希望服務器檢測到我上傳了新的js/css文件,並在那時自動縮小它們。

編輯:我試過在運行時縮小,發現它並不高效。有趣的是要注意,文件被縮小以供任何請求文件的人使用,而文件本身就是一個開銷,並且實際上不會縮短文件的傳遞速度。

理想情況下,文件應在上傳幾秒鐘內縮小。有沒有一個基於事件的系統,而不是一個不斷的投票系統,我可以看看?

編輯:我用米哈伊洛夫答案,並增加了以下的incron文件:

/var/www/laravel/public/js/main.js IN_MODIFY yui-compressor -o /var/www/laravel/public/js/main.min.js /var/www/laravel/public/js/main.js 
+0

只要給我一些名字,這樣我就可以開始了。我對此一無所知。我甚至不知道要谷歌什麼。 – rotaercz

+2

你可以保留一個包含你想要包含的每個文件的表格,以及它們的最後修改日期。然後每天運行一個cron作業,根據記錄的日期檢查您的文件(如果有更新的話),然後運行minify進程並使用新日期更新表格。這不會是直接的,但它會是「自動的」 – RightClick

+0

但它需要立即。至少在上傳的幾秒鐘內。是使用cron工作的方式嗎? – rotaercz

回答

1

inotify的是得到通知重新文件系統事件(創建,修改或刪除文件)推薦的模式,什麼Wikipedia says

的inotify(inode的通知)是可以充當來擴展文件系統 注意更改文件系統,並且報告這些 更改應用的Linux內核子系統。

查看相似圖表use case:如何獲取通過rsync複製的文件的通知。

+0

我覺得我正在接近,但你能提供一些關於如何使用它的更多細節?我用putty登錄到服務器,並使用'sudo apt-get install incron'來安裝它。但現在我不確定事情是如何工作的? – rotaercz

+0

@rotaercz編輯incron文件類型* incrontab -e *並放入以下內容*/tmp IN_ALL_EVENTS記錄器「/ tmp action for $#file」*。然後你可以看到記錄器根據創建的新文件進行刪除操作。日誌可從這裏獲得:/ var/log/messages – Anatoly

+0

你如何停止incron?我現在進入了一個循環,因爲我在js文件被修改的時候做了這個循環,所以它縮小了它,但是縮小本身正在修改文件,以便它永遠持續下去。 – rotaercz

相關問題