Oto kilka porad, jak zautomatyzować niektóre codzienną obsługę wymaganą lub zalecaną przez DokuWiki.
Patrz czarna lista jak ustawić zadanie cron by aktualizować na bieżąco filtry antyspamowe.
Zaleca się ustawienie pewnych procesów czyszczenia ruchliwych DokuWikis. Następujący skrypt powłoki Bash (powłoka Unix) posłuży za przykład. Usuwa on poprzednie wersje z archiwum, usuwa złamane pliki blokad i puste foldery, oraz czyści pamięć podręczną1).
#!/bin/bash cleanup() { # $1 ... full path to data directory of wiki # $2 ... number of days after which old files are to be removed # purge files older than $2 days from the attic (old revisions) find "$1"/attic/ -type f -mtime +$2 -print0 | xargs -0r rm -f # remove stale lock files (files which are 1-2 days old) find "$1"/locks/ -name '*.lock' -type f -mtime +1 -print0 | xargs -0r rm -f # remove empty directories find "$1"/{attic,cache,index,locks,media,meta,pages,tmp}/ \ -mindepth 1 -type d -empty -print0 | xargs -0r rmdir # remove files older than $2 days from the cache find "$1"/cache/?/ -type f -mtime +$2 -print0 | xargs -0r rm -f } # cleanup DokuWiki installations (path to datadir, number of days) # some examples: cleanup /home/user1/htdocs/doku/data 256 cleanup /home/user2/htdocs/mywiki/data 180 cleanup /var/www/superwiki/data 180
Aby uruchomić go automatycznie, ustaw zadanie cron. Następujący przykład wywołuje skrypt każdego dnia 7 minut po północy. Aby uruchomić jako użytkownik inny niż root, usuń root
.
7 0 * * * root /full/path/to/cleanup.sh
Upewnij się, że wszystko zostało poprawnie ustawione - nie chciałbyś chyba usunąć nie tych rzeczy?
Skrypt czyszczący poprzednie wersje plikóww systemach Windows to waRmZip, dostępny ze strony SourceForge. Napisz plik wsadowy by go wywołać i zaplanuj codzienne zadanie w harmonogramie. I jak to się mówi: 'Trzeba pamiętać o ustawieniu wszystkiego poprawnie'
Skorzystałem z powyższej sugestii odnośnie waRmZip
i napisałem plik wsadowy - może on pomoże.
Moim ulubionym sposobem uruchamiania zadań w Windows jest PyCron.
@echo off set waRmZip="c:\Program Files\waRmZip\waRmZip.wsf" set wikiHome="c:\path\to\htdocs\wiki\data" rem Move attic files older than 30 days to an archive location %waRmZip% %wikiHome%\attic /ma:30 /md:%wikiHome%_archive\attic /r /q rem Option: delete attic files older than 30 days rem %waRmZip% %wikiHome%\attic /da:30 /dc /r /q rem Delete empty attic directories; waRmZip requires the /da flag when using rem /df, so add filter for *.zzz so /da doesn't remove any files %waRmZip% %wikiHome%\attic /r /da:31 /df /fo:*.zzz /q rem Remove stale lock files %waRmZip% %wikiHome%\locks /da:1 /fo:*.lock /r /q rem Remove empty directories %waRmZip% %wikiHome%\pages /da:365 /df /fo:*.zzz /r /q
By utrzymywać piaskownicę i inne strony w czystości, użyj zadania cron na przykład co 30 minut, które odtwarza oryginalną zawartość piaskownicy i innych stron.
Przykład: Przywróć zawartość piaskownicy co 30 min:
0,30 * * * * cp -pf /path/to/savedwiki/data/pages/playground/playground.txt /path/to/dokuwiki/data/pages/playground/
Przykład: Przywróć wszystkie strony w przestrzeni nazw “wiki” co 30 min:
0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/wiki/ /path/to/dokuwiki/data/pages/wiki/
Jeśli hosting nie udostępnia możliwości ustalenia harmonogramu zadań, rozważ użycie wtyczki cronojob.
Could you please provide PHP versions of these scripts to use with the cronojob plugin?
Regarding the above cleanup script which uses file modification time (mtime), wouldn't it be safer to use the timestamp in the filename to determine if a file in the attic should be deleted or not?
On the one hand, I'd say it could be done but it's of course trickier to set up. For many installations it will be fine to use mtime. On the other hand, some might want to make sure they clean up old files no matter what (e.g. files left after a crash or critical PHP error).
Could someone add the appropriate line for cache maintenance to the Windows waRmZip script?