Php 将var_dump从文本文件保存到多服务器ip的文本文件中

Php 将var_dump从文本文件保存到多服务器ip的文本文件中,php,mysql,sql,var-dump,Php,Mysql,Sql,Var Dump,这是sql查询的php代码, 如果我有多个sql服务器到文本文件,我想从这个文件得到服务器。 如何将每个服务器的var_转储保存到“serverip.txt”中 我有这个错误 警告:文件\u put\u contents(ServerIp.txt)[function.file put contents]:无法打开流:第24行的C:\AppServ\www\connectdb.php中的参数无效 也许可以使用更精确的方法,比如print\r,它有一种存储输出的模式 while ($row =

这是sql查询的php代码, 如果我有多个sql服务器到文本文件,我想从这个文件得到服务器。 如何将每个服务器的var_转储保存到“serverip.txt”中


我有这个错误

警告:文件\u put\u contents(ServerIp.txt)[function.file put contents]:无法打开流:第24行的C:\AppServ\www\connectdb.php中的参数无效


也许可以使用更精确的方法,比如
print\r
,它有一种存储输出的模式

while ($row = mysql_fetch_assoc($result)) {
    file_put_contents("$server.txt", print_r($row, true));
}

也许可以使用更精确的方法,比如
print\r
,它有一种存储输出的模式

while ($row = mysql_fetch_assoc($result)) {
    file_put_contents("$server.txt", print_r($row, true));
}
我想不是

ob_get_flush()
你想要

$var = ob_get_clean();
file_put_contents("$server.txt", $var );
要把这一切结合起来,你需要这样做

while ($row = mysql_fetch_assoc($result)) {
   ob_start();
   var_dump($row);
   file_put_contents("$server.txt",ob_get_clean());
}

获取当前缓冲区内容并删除当前输出缓冲区。。。 返回输出缓冲区和结束输出缓冲区的内容。如果输出缓冲未激活,则返回FALSE

-注意-
end output buffering
这就是为什么我们需要在循环的每次迭代中重新启动它
ob_start()

对于
ob\u get\u flush()

输出缓冲区必须由ob_start()以 PHP_输出_处理程序_可刷新标志。否则ob_get_flush()将不会 工作

也就是说,这可能不是实现目标的最佳途径。作为替代方法,您可以使用此函数

function getVarType( $var, $escapeHtml = true ){
    $strArg = 'unknown';
    switch ( gettype( $var ) ){
        case 'boolean':
            return ( $var ? 'true' : 'false' );
        case 'integer':
            return intval( $var );
        case 'double':
            return floatval( $var );
        case 'string':
            if( $escapeHtml ){
                $var = htmlentities( $var, ENT_NOQUOTES, 'UTF-8', false);
            }

            return "'".$var."'";
        case 'resource':
            return 'Resource id #'.intval( $var );
        case 'NULL':
            return 'NULL';
        case 'array':
            return "Array";
        case 'object':
            return 'Object('.get_class( $var ).')';
        case 'unknown type':
        default:
            return'UNKNOWN TYPE';
    }
}  

 $row = array_map( 'getVarType', $row );
然而,我认为在PHP7中,它们反转了数组映射的参数。这是我刚刚编写的一个异常/错误处理类,如果需要,可以对其进行修改,使其更接近var_dump。目前,它的设置与异常堆栈跟踪打印输出相匹配

顺便说一句,如果你想要一个真正杀手级的debuggin类,你可以使用我框架中的一个

稍加修改,它可能会适合您的需要(可能有点过分)

这就是它的输出

$G = ['one'=>1, 'two' => 2, 3=>['foo', 'bar']];
EVO_Debug::dump( $G );

==================================== EVO_DEBUG::DUMP =====================================
Output from FILE[ C:\UniServerZ\www\Evo\EVO\bootstrap.php ] on LINE[ 72 ]
------------------------------------------------------------------------------------------
array(3){
     ["one"] => int(1),
     ["two"] => int(2),
     [3] => array(2){
          [0] => string(3) "foo",
          [1] => string(3) "bar",
     },
}
==========================================================================================
虽然你想用

 EVO_Debug::export( $G );
它还可以输出私有属性和类常量。我之所以发布这个链接,是因为处理所有可能的变量类型并不是一件小事,而且PHP是非类型语言,这一点也没有帮助

我认为不是

ob_get_flush()
你想要

$var = ob_get_clean();
file_put_contents("$server.txt", $var );
要把这一切结合起来,你需要这样做

while ($row = mysql_fetch_assoc($result)) {
   ob_start();
   var_dump($row);
   file_put_contents("$server.txt",ob_get_clean());
}

获取当前缓冲区内容并删除当前输出缓冲区。。。 返回输出缓冲区和结束输出缓冲区的内容。如果输出缓冲未激活,则返回FALSE

-注意-
end output buffering
这就是为什么我们需要在循环的每次迭代中重新启动它
ob_start()

对于
ob\u get\u flush()

输出缓冲区必须由ob_start()以 PHP_输出_处理程序_可刷新标志。否则ob_get_flush()将不会 工作

也就是说,这可能不是实现目标的最佳途径。作为替代方法,您可以使用此函数

function getVarType( $var, $escapeHtml = true ){
    $strArg = 'unknown';
    switch ( gettype( $var ) ){
        case 'boolean':
            return ( $var ? 'true' : 'false' );
        case 'integer':
            return intval( $var );
        case 'double':
            return floatval( $var );
        case 'string':
            if( $escapeHtml ){
                $var = htmlentities( $var, ENT_NOQUOTES, 'UTF-8', false);
            }

            return "'".$var."'";
        case 'resource':
            return 'Resource id #'.intval( $var );
        case 'NULL':
            return 'NULL';
        case 'array':
            return "Array";
        case 'object':
            return 'Object('.get_class( $var ).')';
        case 'unknown type':
        default:
            return'UNKNOWN TYPE';
    }
}  

 $row = array_map( 'getVarType', $row );
然而,我认为在PHP7中,它们反转了数组映射的参数。这是我刚刚编写的一个异常/错误处理类,如果需要,可以对其进行修改,使其更接近var_dump。目前,它的设置与异常堆栈跟踪打印输出相匹配

顺便说一句,如果你想要一个真正杀手级的debuggin类,你可以使用我框架中的一个

稍加修改,它可能会适合您的需要(可能有点过分)

这就是它的输出

$G = ['one'=>1, 'two' => 2, 3=>['foo', 'bar']];
EVO_Debug::dump( $G );

==================================== EVO_DEBUG::DUMP =====================================
Output from FILE[ C:\UniServerZ\www\Evo\EVO\bootstrap.php ] on LINE[ 72 ]
------------------------------------------------------------------------------------------
array(3){
     ["one"] => int(1),
     ["two"] => int(2),
     [3] => array(2){
          [0] => string(3) "foo",
          [1] => string(3) "bar",
     },
}
==========================================================================================
虽然你想用

 EVO_Debug::export( $G );

它还可以输出私有属性和类常量。我之所以发布这个链接,是因为处理所有可能的变量类型并不是一件小事,而且PHP是非类型语言,这一点也没有帮助

不要。使用实际的编码格式,如。不要。使用像JSON这样的实际编码格式???如何??尝试
ob_start()
然后
ob_get_clean()
您之前发布了一个类似的问题,并使用了Barmar答案的语法
file_put_contents(“dump.txt”,ob_get_flush())并接受它。如果这个答案在当时产生了同样的错误,你为什么接受这个答案而不告诉他这个错误?你只是让他看看你的新问题。我通常不这样使用输出缓冲,但我认为主要的问题是这个<代码>输出缓冲区必须由带有PHP_output_HANDLER_FLUSHABLE标志的ob_start()启动。否则ob\u get\u flush()将不起作用。
ob\u start(null,0,PHP\u OUTPUT\u HANDLER\u FLUSHABLE)
不起作用。使用实际的编码格式,如。不要。使用像JSON这样的实际编码格式???如何??尝试
ob_start()
然后
ob_get_clean()
您之前发布了一个类似的问题,并使用了Barmar答案的语法
file_put_contents(“dump.txt”,ob_get_flush())并接受它。如果这个答案在当时产生了同样的错误,你为什么接受这个答案而不告诉他这个错误?你只是让他看看你的新问题。我通常不这样使用输出缓冲,但我认为主要的问题是这个<代码>输出缓冲区必须由带有PHP_output_HANDLER_FLUSHABLE标志的ob_start()启动。否则ob_get_flush()将不起作用。
ob_start(null,0,PHP_OUTPUT_HANDLER_FLUSHABLE)
good point Fred。另外,我不认为这是保存数据的最佳方式。我想自己设置一些东西,但是,我太累了。在晚上的这个时候,我的脑袋乱糟糟的。我有类似的想法,但它的设置是为了输出修剪过的异常堆栈跟踪。基本上,我的框架中有几个调用总是相同的,所以我想将它们从stacktrace中删除,但是异常类
getraceasstring
是final,因此没有重载它。所以我删减它,然后从普通数组版本创建我自己的字符串堆栈跟踪。基本上,这是一种获取stacktrace进行调试的方法,类似于exception类输出。另外,我不认为这是保存数据的最佳方式。我想自己做一些设置