rtorrent开启rpc:
scgi_port = 127.0.0.1:5000
通过nginx中转rpc请求:
server {
listen 8000;
server_name localhost;
location ^~ /RPC2 {
include scgi_params;
scgi_pass 127.0.0.1:5000;
}
}
php需安装xmlrpc扩展:
<?php
class XMLRPCClient
{
public function __construct($uri)
{
$this->uri = $uri;
$this->ch = null;
}
public function __destruct()
{
$this->close();
}
public function close()
{
if ($this->ch !== null)
{
curl_close($this->ch);
}
$this->ch = null;
}
public function get($method, $params = array())
{
$xml = xmlrpc_encode_request($method,$params);
if ($this->ch === null)
{
$this->ch = curl_init();
curl_setopt($this->ch, CURLOPT_URL, $this->uri);
curl_setopt($this->ch, CURLOPT_HEADER, 0);
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->ch, CURLOPT_POST, true);
}
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $xml);
$response = curl_exec($this->ch);
$response = str_replace('i8>', 'string>', $response);
$result = xmlrpc_decode_request($response, $method);
return $result;
}
}
$client = new XMLRPCClient("http://127.0.0.1:8000/RPC2");
//查看rpc命令列表
var_dump($client->get("system.listMethods"));
//查看任务列表
$list = $client->get("download_list", array("","started"));
//文件路径
$filepath = $client->get("d.get_base_path", $list[0]);
//上传速度
$up_rate = $client->get("d.get_up_rate", $list[0]);
$down_rate = $client->get("d.get_down_rate", $list[0]);
echo $up_rate.'/'.$down_rate.PHP_EOL;
//删除下载
//$client->get("d.erase", $list[0]);
//删除文件
//unlink($filepath);
rpc命令列表:https://github.com/rakshasa/rtorrent/wiki/rTorrent-0.9-Comprehensive-Command-list-(WIP)