Lock.php 975 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace GatewayWorker\Lib;
  3. /**
  4. * lock
  5. */
  6. class Lock
  7. {
  8. /**
  9. * handle
  10. * @var resource
  11. */
  12. private static $fileHandle = null;
  13. /**
  14. * get lock
  15. * @param bool block
  16. * @return bool
  17. */
  18. public static function get($block=true)
  19. {
  20. $operation = $block ? LOCK_EX : LOCK_EX | LOCK_NB;
  21. if(self::getHandle())
  22. {
  23. return flock(self::$fileHandle, $operation);
  24. }
  25. return false;
  26. }
  27. /**
  28. * release lock
  29. * @return true
  30. */
  31. public static function release()
  32. {
  33. if(self::getHandle())
  34. {
  35. return flock(self::$fileHandle, LOCK_UN);
  36. }
  37. return false;
  38. }
  39. /**
  40. * get handle
  41. * @return resource
  42. */
  43. protected static function getHandle()
  44. {
  45. if(!self::$fileHandle)
  46. {
  47. self::$fileHandle = fopen(__FILE__, 'r+');
  48. }
  49. return self::$fileHandle;
  50. }
  51. }