ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilAssQuestionProcessLockerFile.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionProcessLocker.php';
5
13{
14 const PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE = 'questionWorkingStateUpdate';
15
20
25
30 {
31 $this->lockFileStorage = $lockFileStorage;
32 $this->lockFileHandles = array();
33 }
34
36 {
37 $this->requestLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
38 }
39
41 {
42 $this->releaseLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
43 }
44
46 {
47 $this->requestLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
48 }
49
51 {
52 $this->releaseLock(self::PROCESS_NAME_QUESTION_WORKING_STATE_UPDATE);
53 }
54
55 private function requestLock($processName)
56 {
57 $lockFilePath = $this->getLockFilePath($processName);
58 $this->lockFileHandles[$processName] = fopen($lockFilePath, 'w');
59 flock($this->lockFileHandles[$processName], LOCK_EX);
60 }
61
62 private function getLockFilePath($processName)
63 {
64 $path = $this->lockFileStorage->getPath();
65 return $path.'/'.$processName.'.lock';
66 }
67
68 private function releaseLock($processName)
69 {
70 flock($this->lockFileHandles[$processName], LOCK_UN);
71 fclose($this->lockFileHandles[$processName]);
72 }
73}
__construct(ilAssQuestionProcessLockFileStorage $lockFileStorage)
$path
Definition: index.php:22