session.go 923 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "context"
  4. "io/ioutil"
  5. "os"
  6. "time"
  7. "golang-fave/engine/utils"
  8. "github.com/vladimirok5959/golang-server-sessions/session"
  9. "github.com/vladimirok5959/golang-worker/worker"
  10. )
  11. func session_cleaner(www_dir string) *worker.Worker {
  12. return worker.New(func(ctx context.Context, w *worker.Worker, o *[]worker.Iface) {
  13. if www_dir, ok := (*o)[0].(string); ok {
  14. session_clean(ctx, www_dir)
  15. }
  16. select {
  17. case <-ctx.Done():
  18. case <-time.After(1 * time.Hour):
  19. return
  20. }
  21. }, &[]worker.Iface{
  22. www_dir,
  23. })
  24. }
  25. func session_clean(ctx context.Context, www_dir string) {
  26. files, err := ioutil.ReadDir(www_dir)
  27. if err == nil {
  28. for _, file := range files {
  29. select {
  30. case <-ctx.Done():
  31. return
  32. default:
  33. tmpdir := www_dir + string(os.PathSeparator) + file.Name() + string(os.PathSeparator) + "tmp"
  34. if utils.IsDirExists(tmpdir) {
  35. session.Clean(tmpdir)
  36. }
  37. }
  38. }
  39. }
  40. }