viharm / php-aria2-rpc
一个通过 Aria2 RPC 接口与 Aria2 下载管理器交互的 PHP 库
Requires
- php: >=5.4.0
- mnsami/composer-custom-directory-installer: 1.1.*
- viharm/php-khelper: ^1.4.1
This package is auto-updated.
Last update: 2024-09-27 01:51:15 UTC
README
使用 json-RPC 与 aria2 通信的库。
安装
先决条件
- PHP 5+ 且支持 cURL
- 标准 Web 框架(Web 服务器等)
- Aria2 在守护进程模式下运行,可以是同一主机或不同已知主机
下载
存档
从 下载 获取发行存档
Composer
从 v2.4.0 开始,phpAria2rpc 对 Composer 支持,在 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
键的值来指定要使用的代理类型。目前仅支持http
和socks5
类型。
此参数没有默认值。
主机
使用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的文档
- http://aria2.sourceforge.net/manual/en/html/aria2c.html#rpc-interface有关RPC接口。
- http://aria2.sourceforge.net/manual/en/html/aria2c.html有关一般选项。
可以通过将布尔值$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
aria2.class.php
(2013-11-22)- 可在公共领域获得,地址为https://github.com/shiny/php-aria2
- 作者 daijie (shiny)
致谢
工具
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
CodeGit 是 Codiad 的 Git 插件 (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
Ungit 是 Git 的客户端 (https://github.com/FredrikNoren/ungit),在 MIT 许可下使用
版权 (C) Fredrik Norén
GitHub
由 GitHub 代码仓库 (github.com) 托管。