Overview

Namespaces

  • Charcoal
    • App
      • Action
      • Config
      • Handler
      • Middleware
      • Module
      • Route
      • Script
      • ServiceProvider
      • Template

Classes

  • Charcoal\App\Action\AbstractAction
  • Charcoal\App\App
  • Charcoal\App\AppConfig
  • Charcoal\App\AppContainer
  • Charcoal\App\Config\CacheConfig
  • Charcoal\App\Config\DatabaseConfig
  • Charcoal\App\Config\FilesystemConfig
  • Charcoal\App\Config\LoggerConfig
  • Charcoal\App\Config\MemcacheCacheConfig
  • Charcoal\App\Config\MemcacheCacheServerConfig
  • Charcoal\App\Handler\AbstractHandler
  • Charcoal\App\Handler\Error
  • Charcoal\App\Handler\HandlerConfig
  • Charcoal\App\Handler\NotAllowed
  • Charcoal\App\Handler\NotFound
  • Charcoal\App\Handler\PhpError
  • Charcoal\App\Handler\Shutdown
  • Charcoal\App\Middleware\CacheMiddleware
  • Charcoal\App\Module\AbstractModule
  • Charcoal\App\Module\ModuleConfig
  • Charcoal\App\Module\ModuleManager
  • Charcoal\App\Route\ActionRoute
  • Charcoal\App\Route\ActionRouteConfig
  • Charcoal\App\Route\RouteConfig
  • Charcoal\App\Route\RouteManager
  • Charcoal\App\Route\ScriptRoute
  • Charcoal\App\Route\ScriptRouteConfig
  • Charcoal\App\Route\TemplateRoute
  • Charcoal\App\Route\TemplateRouteConfig
  • Charcoal\App\Script\AbstractScript
  • Charcoal\App\ServiceProvider\AppServiceProvider
  • Charcoal\App\ServiceProvider\CacheServiceProvider
  • Charcoal\App\ServiceProvider\DatabaseServiceProvider
  • Charcoal\App\ServiceProvider\FilesystemServiceProvider
  • Charcoal\App\ServiceProvider\LoggerServiceProvider
  • Charcoal\App\ServiceProvider\ViewServiceProvider
  • Charcoal\App\Template\AbstractTemplate
  • Charcoal\App\Template\AbstractWidget
  • Charcoal\App\Template\WidgetBuilder

Interfaces

  • Charcoal\App\Action\ActionInterface
  • Charcoal\App\AppAwareInterface
  • Charcoal\App\Handler\HandlerInterface
  • Charcoal\App\Module\ModuleInterface
  • Charcoal\App\Route\RouteInterface
  • Charcoal\App\Script\CronScriptInterface
  • Charcoal\App\Script\ScriptInterface
  • Charcoal\App\Template\TemplateInterface
  • Charcoal\App\Template\WidgetInterface

Traits

  • Charcoal\App\AppAwareTrait
  • Charcoal\App\CallableResolverAwareTrait
  • Charcoal\App\Script\ArgScriptTrait
  • Charcoal\App\Script\CronScriptTrait
  • Charcoal\App\Script\PathScriptTrait
  • Overview
  • Namespace
  • Class
 1: <?php
 2: 
 3: namespace Charcoal\App\Script;
 4: 
 5: use \Exception;
 6: 
 7: /**
 8:  * Cron-job utilities
 9:  */
10: trait CronScriptTrait
11: {
12:     /**
13:      * @var boolean $useLock
14:      */
15:     private $useLock = false;
16: 
17:     /**
18:      * Lock file pointer
19:      * @var resource $lockFilePointer
20:      */
21:     private $lockFilePointer;
22: 
23:     /**
24:      * @param boolean $useLock The boolean flag if a lock should be used.
25:      * @return CronScriptInterface Chainable
26:      */
27:     public function setUseLock($useLock)
28:     {
29:         $this->useLock = !!$useLock;
30:         return $this;
31:     }
32: 
33:     /**
34:      * @return boolean
35:      */
36:     public function useLock()
37:     {
38:         return $this->useLock;
39:     }
40: 
41:     /**
42:      * @throws Exception If the lock file can not be opened.
43:      * @return boolean
44:      */
45:     public function startLock()
46:     {
47:         $lockName = str_replace('\\', '-', get_class($this));
48:         $lockName .= md5(__DIR__);
49:         // Ensure uniqueness for project on server
50:         $lockFile = sys_get_temp_dir().'/'.$lockName;
51:         $this->lockFilePointer = fopen($lockFile, 'w');
52:         if (!$this->lockFilePointer) {
53:             throw new Exception(
54:                 sprintf('Can not run action. Lock file not available: "%s"', $lockFile)
55:             );
56:         }
57:         if (flock($this->lockFilePointer, LOCK_EX)) {
58:             return true;
59:         } else {
60:             throw new Exception(
61:                 sprintf('Can not run action. Action locked: "%s".', $lockFile)
62:             );
63:         }
64:     }
65: 
66:     /**
67:      * @return void
68:      */
69:     public function stopLock()
70:     {
71:         if ($this->lockFilePointer) {
72:             flock($this->lockFilePointer, LOCK_UN);
73:             fclose($this->lockFilePointer);
74:         }
75:     }
76: }
77: 
API documentation generated by ApiGen