开发者

Proc_Open in PHP and Pipes

This is a source code to control a minecraft server over a web interface with a MySQL server. Everything works fine except of line 29, which doesn't seem to be executed. there simply doesn't appear anything in the servers cin. Also there doesn't happen anything... Does anyone have an idea, for why this is so?

<?php
    echo("Successfully Loaded.\n");
    include("../src/func.php");
    $descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("file", "../log/server.log", "a"));
    $cwd = '';
    $outpt = "../log/server.log";
    $ru_file = "runlevel.state";
    echo("Starting Server...\n");
    $process = proc_open('java -Xincgc -Xmx640M -jar craftbukkit.jar', $descriptorspec, $pipes, $cwd, $_ENV);
    $log_handle = fopen($outpt,"w");
    echo("Starting Daemon...\n");
    $run = 1;
    while($run == 1)
    {
        $handle = fopen($ru_file,"r");
        $run = (int)fread($handle, fil开发者_JS百科esize($ru_file));
        fclose($handle);
        $mysqli = mopen();
        $query = $mysqli -> prepare("SELECT ID, Command, Urheber FROM tbl_cmds WHERE passed = '0'");
        echo($mysqli->error);
        $query -> execute();
        $query -> store_result();
        $query -> bind_result($id, $command, $who);
        while($query -> fetch())
        {
            fwrite($pipes[0], $command);
            $datum = date("d.m.Y H:i:s",time());
            echo("[$datum] Executed command '$command' by User with ID ($who)\n");
            $mysqli2 = mopen();
            $query2 = $mysqli2 -> prepare("UPDATE tbl_cmds SET passed = 1 WHERE ID = ?");
            echo($mysqli2->error);
            $query2 -> bind_param("i", $id);
            $query2 -> execute();
        }
    }
    echo("Daemon Stopped...\n");
    fclose($pipes[0]);
    fclose($log_handle);
    proc_close($process);
    echo("Server Stopped...\n");
    echo("Exiting with code 0x0...\n");
?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜