scrutinizer/resource-manager 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

scrutinizer/resource-manager

Composer 安装命令:

composer require scrutinizer/resource-manager

包简介

Provides automatic, robust resource management with an easy-to-use interface

README 文档

README

This library helps you manage resources with an easy-to-use interface. Resources like temporary file, or directories are automatically clean-up when leaving the scope, background processes are stopped, and any other custom resources are destroyed.

Usage

use Scrutinizer\ResourceManager\ScopedResourceManager;


class SomeClass {
    private $rm;

    public function __construct(ResourceManager $rm)
    {
        $this->rm = new FilesystemResourceManager($rm);
    }

    public function run()
    {
        $rs = $this->rm->managed(function() {
            $someTmpFile = $this->rm->createTemporaryFile();

            // do something with $someTmpFile

            return $result;
        });

        // $someTmpFile has been automatically cleaned-up here.
    }
}

$someClass = new SomeClass(new ScopedResourceManager());
$someClass->run();

Resource Manager Implementations

By default, you would want to use the ScopedResourceManager which allows arbitrary nesting of scopes. This manager can also be wrapped by other implementations which provide some convenience methods like f.e. the FilesystemResourceManager which allows you to easily create managed temporary files, or directories.

Background Processes

If you start a background process, like a server f.e., that you want to clean-up when leaving the scope, you can use the resource manager's manage method:

use Scrutinizer\ResourceManager\ScopedResourceManager;
use Symfony\Component\Process\Process;

class SomeTest extends \PHPUnit_Framework_TestCase
{
    private $rm;
    
    public function testSomething()
    {
        // The resource manager's global scope will automatically be cleaned up 
        // when PHP calls all object destructors.
    }
    
    protected function setUp()
    {
        $this->rm = new ScopedResourceManager();
        
        $proc = new Process('some-server-cmd');
        $proc->start();
        $this->rm->manage($proc);
    }
}

Custom Resources

By default, this library supports temporary files, temporary directories, and Symfony background processes (using its Process component). You can also add create your own resources by implementing Scrutinizer\ResourceManager\Resource:

use Scrutinizer\ResourceManager\Resource;
use Scrutinizer\ResourceManager\ScopedResourceManager;

class PhpFileResource implements Resource 
{
    private $handle;

    public function __construct($fileHandle)
    {
        $this->handle = $fileHandle;
    }

    public function destroy()
    {
        fclose($this->handle);
    }
}

$rm = new ScopedResourceManager();
$rm->manage(new PhpFileResource($someHandle));

统计信息

  • 总下载量: 1.19k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-08-12

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固