viharm/php-aria2-rpc

一个通过 Aria2 RPC 接口与 Aria2 下载管理器交互的 PHP 库

v2.4.0 2018-09-26 12:12 UTC

This package is auto-updated.

Last update: 2024-09-27 01:51:15 UTC


README

使用 json-RPC 与 aria2 通信的库。

基于 shinyphp-aria2

安装

先决条件

  • PHP 5+ 且支持 cURL
  • 标准 Web 框架(Web 服务器等)
  • Aria2 在守护进程模式下运行,可以是同一主机或不同已知主机

下载

存档

下载 获取发行存档

Composer

从 v2.4.0 开始,phpAria2rpcComposer 支持,在 Packagist 上作为 viharm/php-aria2-rpc 提供。此库可以作为独立库安装,也可以在包含 Composer 的任何项目中使用。

独立

可以使用 Composer 安装此项目的独立副本

php compser.phar create-project viharm/php-aria2-rpc phpAria2rpc

上述命令将在当前工作目录的子目录 phpAria2rpc 中安装 phpAria2rpc

依赖

要使 Composer 自动将 phpAria2rpc 作为依赖项安装,请将以下内容包含在您的 composer.json

{
	"require": {
    "viharm/php-aria2-rpc": "^2.4.0"
	}
}

这将使 phpAria2rpc 安装在典型的 Composer 启用项目的标准 vendor 子目录中。

克隆

克隆仓库。

git clone --recurse-submodules \
https://github.com/viharm/phpAria2rpc.git

请记住递归克隆(--recurse-submodules),以确保克隆子模块。

部署

将下载的目录结构保存到您的应用程序中(插件、包含文件等)的任一路径下。

配置

目前无需特定配置。

使用

以守护进程模式运行 Aria2

有几种推荐的配置 Aria2 的选项,但是启动所需的最小必要条件是...

  • --enable-rpc
  • --rpc-allow-origin-all
  • -c
  • -D

假设 Aria2 二进制文件在您的执行路径中,使用上述选项运行它...

aria2c --enable-rpc --rpc-allow-origin-all -c -D

为了在大多数 Linux 系统上启用自动启动,在 /etc/rc.local 中的 exit 行之前添加以下内容...

/usr/local/bin/aria2c --enable-rpc --rpc-allow-origin-all -c -D

使用

将库包含到您的应用程序代码中

include 'phpAria2rpc.class.inc.php';

创建一个实例

$aria2 = new phpAria2rpc() ;

phpAria2rpc 为在同一主机上运行的 Aria2 使用安全默认值。有关自定义配置的详细信息,请参阅高级使用说明。

一旦创建了对象,库将通过查询 Aria2 的版本来测试连接。此查询的状态(成功或失败)保存在布尔值中

$aria2->bl_ConnStatus

此布尔值可用于调用函数/脚本的逻辑中,以在连接失败的情况下制定应急方案。

调用 Aria2 方法

var_dump($aria2->getGlobalStat());
var_dump($aria2->tellActive());
var_dump($aria2->tellWaiting(0,1000));
var_dump($aria2->tellStopped(0,1000));
var_dump($aria2->addUri(array('https://www.google.com.hk/images/srpr/logo3w.png'),array(
	    'dir'=>'/tmp',
)));
var_dump($aria2->tellStatus('1'));
var_dump($aria2->removeDownloadResult('1'));
//and more ...

高级使用

高级配置允许自定义设置。构建一个服务器配置数组

$server = array (
  'host'      => 'aria2.host.local' ,
  'port'      => '6800' ,
  'rpcsecret' => 'aria2rpcsecrettoken' ,
  'secure'    => TRUE ,
  'cacert'    => '/path/to/ca-cert/on/host/running/phpAria2.pem' ,
  'rpcuser'   => 'legacyrpcusername' ,
  'rpcpass'   => 'legacyrpcpassword' ,
  'proxy'     => array (
    'type' => 'socks5' ,
    'host' => 'localhost' ,
    'port' => 9050 ,
    'user' => 'proxyuser' ,
    'pass' => 'proxypassword'
  )
) ;

此数组仅在创建类实例时作为参数传递一次。

$aria2 = new phpAria2rpc($server) ;

phpAria2rpc 将根据 Aria2 的要求插入正确的值。

进一步的使用是正常的,通过调用 Aria2 方法针对 phpAria2rpc

安全 RPC

如果 Aria2 已配置为安全 RPC,则将 secure 键值在 $server 数组中设置为 TRUE

如果使用自签名证书,则适当的CA证书必须复制到运行此库的主机,并在$server数组中通过cacert键值指定其路径。

RPC密钥令牌

如果Aria2已通过RPC接口配置了密钥令牌,则应在$server数组中的rpcsecret键值中指定。

旧版RPC身份验证

phpAria2rpc还可以配置为使用RPC接口的旧版用户名/密码身份验证连接到Aria2守护进程。

请注意,此身份验证方法已被Aria2作者弃用,但仍由phpAria2rpc支持,以便与不带新密钥令牌身份验证的旧版Aria2版本兼容。

RPC用户名(旧版)

$server数组中通过rpcuser键值指定RPC用户名。

RPC密码(旧版)

$server数组中通过rpcpass键值指定RPC密码。

通过代理连接

phpAria2rpc允许通过代理连接到所需的Aria2实例。这可以通过向传递给类的数组参数中添加一个子数组项proxy来完成。

此子数组是关联的,用于设置代理配置。

有关特定于应用程序环境的值的信息,请参阅代理配置或代理服务的文档。

它具有以下元素。

类型

使用type键的值来指定要使用的代理类型。目前仅支持httpsocks5类型。

此参数没有默认值。

主机

使用host键的值来指定要使用的代理主机。允许IP地址和可解析的主机名。

此参数没有默认值。

端口

使用port键的值来指定代理服务的端口号。这是代理服务监听连接的端口。

此参数没有默认值。

代理身份验证

如果代理服务器需要身份验证,则可以通过在proxy子数组中添加两个更多项来实现。

请记住,这与Aria2的RPC身份验证不同。

  • 使用user键的值来指定用于与代理服务进行身份验证的用户名。

    如果没有提供user或为NULL,则phpAria2不会尝试与代理服务进行身份验证。

  • 使用pass键的值来指定用于与代理服务进行身份验证的密码。

    如果没有提供pass或为NULL,则phpAria2将仅使用用户名来与代理服务进行身份验证。虽然这种情况不太可能,但它允许连接到具有非标准设置的代理服务器。

    仅使用用户名和没有密码的代理身份验证取决于代理服务,并且如果配置不当可能会失败。

示例

下载文件

	$addresult = $aria2->addUri ( array (
	  'https://www.google.com.hk/images/srpr/logo3w.png'
	) ,
  array('dir'=>'/tmp')
  ) ) ;

返回数据

无法下载
	array(3) {
	  ["id"]=>
	  string(1) "1"
	  ["jsonrpc"]=>
	  string(3) "2.0"
	  ["result"]=>
	  array(13) {
	    ["completedLength"]=>
	    string(1) "0"
	    ["connections"]=>
	    string(1) "0"
	    ["dir"]=>
	    string(4) "/tmp"
	    ["downloadSpeed"]=>
	    string(1) "0"
	    ["errorCode"]=>
	    string(1) "1"
	    ["files"]=>
	    array(1) {
	      [0]=>
	      array(6) {
	        ["completedLength"]=>
	        string(1) "0"
	        ["index"]=>
	        string(1) "1"
	        ["length"]=>
	        string(1) "0"
	        ["path"]=>
	        string(0) ""
	        ["selected"]=>
	        string(4) "true"
	        ["uris"]=>
	        array(1) {
	          [0]=>
	          array(2) {
	            ["status"]=>
	            string(4) "used"
	            ["uri"]=>
	            string(48) "https://www.google.com.hk/images/srpr/logo3w.png"
	          }
	        }
	      }
	    }
	    ["gid"]=>
	    string(1) "2"
	    ["numPieces"]=>
	    string(1) "0"
	    ["pieceLength"]=>
	    string(7) "1048576"
	    ["status"]=>
	    string(5) "error"
	    ["totalLength"]=>
	    string(1) "0"
	    ["uploadLength"]=>
	    string(1) "0"
	    ["uploadSpeed"]=>
	    string(1) "0"
	  }
	}
下载中(活动状态)
	array(3) {
	  ["id"]=>
	  string(1) "1"
	  ["jsonrpc"]=>
	  string(3) "2.0"
	  ["result"]=>
	  array(13) {
	    ["bitfield"]=>
	    string(8) "e0000000"
	    ["completedLength"]=>
	    string(7) "3932160"
	    ["connections"]=>
	    string(1) "1"
	    ["dir"]=>
	    string(18) "/data/files/lixian"
	    ["downloadSpeed"]=>
	    string(5) "75972"
	    ["files"]=>
	    array(1) {
	      [0]=>
	      array(6) {
	        ["completedLength"]=>
	        string(7) "3145728"
	        ["index"]=>
	        string(1) "1"
	        ["length"]=>
	        string(8) "31550548"
	        ["path"]=>
	        string(48) "/data/files/lixian/[茶经].陆羽.扫描版.pdf"
	        ["selected"]=>
	        string(4) "true"
	        ["uris"]=>
	        array(5) {
	          [0]=>
	          array(2) {
	            ["status"]=>
	            string(4) "used"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [1]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [2]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [3]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [4]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	        }
	      }
	    }
	    ["gid"]=>
	    string(1) "3"
	    ["numPieces"]=>
	    string(2) "31"
	    ["pieceLength"]=>
	    string(7) "1048576"
	    ["status"]=>
	    string(6) "active"
	    ["totalLength"]=>
	    string(8) "31550548"
	    ["uploadLength"]=>
	    string(1) "0"
	    ["uploadSpeed"]=>
	    string(1) "0"
	  }
	}
已下载
	array(3) {
	  ["id"]=>
	  string(1) "1"
	  ["jsonrpc"]=>
	  string(3) "2.0"
	  ["result"]=>
	  array(14) {
	    ["bitfield"]=>
	    string(8) "fffffffe"
	    ["completedLength"]=>
	    string(8) "31550548"
	    ["connections"]=>
	    string(1) "0"
	    ["dir"]=>
	    string(18) "/data/files/lixian"
	    ["downloadSpeed"]=>
	    string(1) "0"
	    ["errorCode"]=>
	    string(1) "0"
	    ["files"]=>
	    array(1) {
	      [0]=>
	      array(6) {
	        ["completedLength"]=>
	        string(8) "31550548"
	        ["index"]=>
	        string(1) "1"
	        ["length"]=>
	        string(8) "31550548"
	        ["path"]=>
	        string(48) "/data/files/lixian/[茶经].陆羽.扫描版.pdf"
	        ["selected"]=>
	        string(4) "true"
	        ["uris"]=>
	        array(6) {
	          [0]=>
	          array(2) {
	            ["status"]=>
	            string(4) "used"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [1]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [2]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [3]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [4]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	          [5]=>
	          array(2) {
	            ["status"]=>
	            string(7) "waiting"
	            ["uri"]=>
	            string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
	          }
	        }
	      }
	    }
	    ["gid"]=>
	    string(1) "3"
	    ["numPieces"]=>
	    string(2) "31"
	    ["pieceLength"]=>
	    string(7) "1048576"
	    ["status"]=>
	    string(8) "complete"
	    ["totalLength"]=>
	    string(8) "31550548"
	    ["uploadLength"]=>
	    string(1) "0"
	    ["uploadSpeed"]=>
	    string(1) "0"
	  }
	}

已知限制

  • Aria2不设置CA证书,因此对于自签名证书,CA证书文件必须复制到运行phpAria2rpc的主机。

支持

请参阅Aria2的文档

可以通过将布尔值$GLOBALS['bl_DebugSwitch']设置为TRUE来启用调试。

$GLOBALS['bl_DebugSwitch'] = TRUE ;

请注意,这需要phpKhelper >= v01.02.01

有关问题、查询、建议和评论,请创建一个(问题/票据)[https://github.com/viharm/phpAria2rpc/issues)。

贡献

请随意克隆/分叉并通过pull请求贡献。也欢迎捐赠,只需创建一个问题/工单

如需更多信息,请联系。

环境

测试于

  • Debian Wheezy
  • Debian Jessie
  • Apache 2.2
  • Apache 2.4
  • PHP 5.4
  • PHP 5.5
  • Aria2 1.15.1 和 1.18.8

许可

在修改后的BSD (3-clause) 许可下授权。

许可副本可在...

参考

php-aria2

致谢

工具

Kint

Kint 调试库 (http://raveren.github.io/kint/),在MIT 许可下使用

版权 (c) 2013 Rokas Å leinius (raveren at gmail dot com)

实用工具

Codiad

Codiad 基于 Web 的 IDE (https://github.com/Codiad/Codiad),在 MIT 许可下使用。

版权 (c) Codiad & Kent Safranski (codiad.com)

CodeGit

CodeGitCodiadGit 插件 (https://github.com/Andr3as/Codiad-CodeGit),在 MIT 许可下使用。

版权 (c) Andr3as andranode@gmail.com

VS Code

Visual Studio Code 代码编辑器,在 Microsoft 软件许可 下使用。

jEdit

jEdit 文本编辑器 (http://www.jedit.org/),在 GNU GPL v2 许可下使用。

版权 (C) jEdit 作者。

Ungit

UngitGit 的客户端 (https://github.com/FredrikNoren/ungit),在 MIT 许可下使用

版权 (C) Fredrik Norén

GitHub

GitHub 代码仓库 (github.com) 托管。