FileDependencyHelper.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-10-16 17:15
  7. */
  8. namespace common\helpers;
  9. use Yii;
  10. use yii\base\Exception;
  11. use yii\helpers\FileHelper;
  12. class FileDependencyHelper extends \yii\base\BaseObject
  13. {
  14. /**
  15. * @var string cache depend file director
  16. */
  17. public $rootDir = '@backend/runtime/cache/file_dependency/';
  18. /**
  19. * @var string cache depend file name
  20. */
  21. public $fileName;
  22. /**
  23. * @return bool|string
  24. * @throws yii\base\Exception
  25. */
  26. public function createFileIfNotExists()
  27. {
  28. $cacheDependencyFileName = $this->getDependencyFileName();
  29. if ( !file_exists(dirname($cacheDependencyFileName)) ) {
  30. FileHelper::createDirectory(dirname($cacheDependencyFileName));
  31. }
  32. if (!file_exists($cacheDependencyFileName)){
  33. if (! file_put_contents($cacheDependencyFileName, uniqid()) ){
  34. throw new Exception("create cache dependency file error: " . $cacheDependencyFileName);
  35. }
  36. }
  37. return $cacheDependencyFileName;
  38. }
  39. /**
  40. * update file that invalidate cache
  41. */
  42. public function updateFile()
  43. {
  44. $cacheDependencyFileName = $this->getDependencyFileName();
  45. if (file_exists($cacheDependencyFileName)) {
  46. if ( !file_put_contents($cacheDependencyFileName, uniqid()) ){
  47. throw new Exception("update cache dependency file error: " . $cacheDependencyFileName);
  48. }
  49. }
  50. }
  51. /**
  52. * get full dependency file path (dir + file name)
  53. *
  54. * @return bool|string
  55. */
  56. private function getDependencyFileName()
  57. {
  58. return Yii::getAlias($this->rootDir . $this->fileName);
  59. }
  60. }