code: protected function inLock($key, $callback, array $bind = [], $ttl = 3600)
      {
          $dir = APP_DIR . 'View/cache/logs/';
          $file = $key . '.txt';
          $this->checkDir($dir);
          $dirLog = $dir . $file;
  
          if (!is_callable($callback)) {
              throw new \InvalidArgumentException;
          }
  
          $fp = fopen($dirLog, "w");
          if (flock($fp, LOCK_EX | LOCK_NB)) { // do an exclusive lock
              $data = call_user_func_array($callback, $bind);
  
              flock($fp, LOCK_UN); // release the lock
              $this->lockTime($key, $ttl);
          } else {
              return ['return' => false];
          }
          fwrite($fp, date("d-m-Y H:i:s"));
          fclose($fp);
          return ['return' => true, 'response' => $data];
      }
docs: @param       $key
  @param       $callback
  @param array $bind
  @param int   $ttl
  
  @return array
  @throws \Exception