2

php で送信ソフトウェアを使用できるこのクラスを使用しますが、アクションを個別に使用することはできません。

<?php

require_once( dirname( __FILE__ ) . '/TransmissionRPC.class.php' );

$test_torrent = "http://www.slackware.com/torrents/slackware64-13.1-install-dvd.torrent";

$rpc = new TransmissionRPC();
$rpc->sstats( );

if (isset($_GET['add']))
{
    try
    { 

      $result = $rpc->add( $test_torrent, '/tmp' );
      $id = $result->arguments->torrent_added->id;
      print "ADD TORRENT TEST... [{$result->result}] (id=$id)\n";
      sleep( 2 );

      $rpc->stop( $id );


    } catch (Exception $e) {
      die('[ERROR] ' . $e->getMessage() . PHP_EOL);
    } 
}

if (isset($_GET['start']))
{
    try
    {  
      $rpc->start( $_GET['start'] );

    } catch (Exception $e) {
      die('[ERROR] ' . $e->getMessage() . PHP_EOL);
    } 
}

torrent 実行中の追加後の最初のアクション (torrent を停止する) が、再起動できません ....

@aergistal と @Miguel の編集:

電話test2.php?addするとこの結果が得 られるので、電話してこの結果を得る
追加
test2.php?start=1
ここに画像の説明を入力

でも結果が出ない!! torrent が起動しない: ここに画像の説明を入力

後のデバッグ$_GET['start']:
ここに画像の説明を入力

TRANSMISSIONRPC_DEBUG:: request( method=torrent-start, ...):: Stream context created with options:
Array
(
    [http] => Array
        (
            [user_agent] => TransmissionRPC for PHP/0.3
            [ignore_errors] => 1
            [method] => POST
            [header] => Content-type: application/json
X-Transmission-Session-Id: 4C3KBYhu79SVvFcXrrG4RmpFLZaGu54RSLHT0hFqeVEmAmlV

            [content] => {"method":"torrent-start","arguments":{"ids":["1"]}}
        )

)
TRANSMISSIONRPC_DEBUG:: request( method=torrent-start, ...):: POST Result: 
{"arguments":{},"result":"success"}
TRANSMISSIONRPC_DEBUG:: request( method=torrent-start, ...):: Stream meta info: 
Array
(
    [wrapper_data] => Array
        (
            [0] => HTTP/1.0 200 OK
            [1] => Server: Transmission
            [2] => Content-Type: application/json; charset=UTF-8
        )

    [wrapper_type] => http
    [stream_type] => tcp_socket/ssl
    [mode] => r
    [unread_bytes] => 0
    [seekable] => 
    [uri] => http://localhost:9091/transmission/rpc
    [timed_out] => 
    [blocked] => 1
    [eof] => 1
)
4

2 に答える 2

0

これは解決策かもしれませんが、おそらく理由はもっと複雑です。わかります。
新しく追加したときに新しい torrent が一時停止するように、コードを変更しました。そして、それを止める必要はありません。次に、このクラスが表示できるものを「デバッグ」するコードを追加します。これにより、Web サイトを呼び出すと、test2.php?list=1そのトレントが出力されます。奇妙なことに、元のコードが機能しない理由がわかりません。

<?php
require_once(dirname(__FILE__) . '/TransmissionRPC.class.php');

$test_torrent = "http://www.slackware.com/torrents/slackware64-13.1-install-dvd.torrent";

$rpc = new TransmissionRPC();
$rpc->sstats();

if (isset($_GET['add'])) {
    try {

        $result = $rpc->add_file($test_torrent, '/tmp', array('paused' => true));
        $id     = $result->arguments->torrent_added->id;
        print "ADD TORRENT TEST... [{$result->result}] (id=$id)\n";
        //sleep(2);
        //$rpc->stop($id);

    } catch (Exception $e) {
        die('[ERROR] ' . $e->getMessage() . PHP_EOL);
    }
}

if (isset($_GET['start'])) {
    try {
        echo '<pre>';
        print_r($rpc->start($_GET['start']));
        echo '</pre>';         

    } catch (Exception $e) {
        die('[ERROR] ' . $e->getMessage() . PHP_EOL);
    }
}

//might be interesting to check what torrents you have
if (isset($_GET['list'])) {
    try {
        echo '<pre>';
        print_r($rpc->get());
        echo '</pre>';         
    } catch (Exception $e) {
        die('[ERROR] ' . $e->getMessage() . PHP_EOL);
    }
}

Atmoner による: エラー バグの修正

于 2015-11-24T14:54:21.527 に答える