Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
echo和print在';直播';php版本?_Php_Json_Printing_Echo_Messenger - Fatal编程技术网

echo和print在';直播';php版本?

echo和print在';直播';php版本?,php,json,printing,echo,messenger,Php,Json,Printing,Echo,Messenger,所以我对编程很陌生,除了一个现场脚本,我没有别的东西可以描述它,所以请用官方术语纠正我。无论如何,不久前,我用php制作了这个机器人,并在mac上使用xampp在浏览器中本地运行它。我可以很容易地使用echo和print\r将数组和任何东西打印到网页上。脚本只有在我重新加载页面时才会运行,所以这就是我所说的“不活动”。现在我开始尝试用PHP制作messenger机器人,我正在使用cloud9。我还可以在浏览器中看到脚本,但在这里,我只能看到echo和print的产品,如果它们是我输入的简单字符串

所以我对编程很陌生,除了一个现场脚本,我没有别的东西可以描述它,所以请用官方术语纠正我。无论如何,不久前,我用php制作了这个机器人,并在mac上使用xampp在浏览器中本地运行它。我可以很容易地使用echo和print\r将数组和任何东西打印到网页上。脚本只有在我重新加载页面时才会运行,所以这就是我所说的“不活动”。现在我开始尝试用PHP制作messenger机器人,我正在使用cloud9。我还可以在浏览器中看到脚本,但在这里,我只能看到echo和print的产品,如果它们是我输入的简单字符串,例如:

print_r("stack overflow is life");
这将在我的浏览器中按预期打印。然而,这就是我谈论“现场”脚本运行的地方。它不是重新加载页面,而是实时运行。messenger bot将始终在服务器上处于活动状态,它会根据需要立即回复发送给它的消息。我使用以下代码:

/* receive and send messages */ 
$input = json_decode(file_get_contents('php://input'), true);
file_put_contents("fb.txt", file_get_contents('php://input'));
echo ("<pre>");    print_r($input);
echo ("</pre>");
/*接收和发送消息*/
$input=json\u解码(文件\u获取\u内容('php://input",对),;
文件内容(“fb.txt”,文件内容(“fb.txt”)php://input'));
回声(“”);打印(输入);
回声(“”);

现在,在这种情况下,
$input
不会被打印。我什么也没看见。现在我不知道这是否与实时服务器响应有关,或者是什么,但我需要知道如何看到这是浏览器。我已经测试过了,看看是否真的有一个成功转换的JSON到数组,因为我可以使用
$input
中的信息来回复我的facebook消息,并且这个机器人可以工作。我还可以将JSON输出到一个txt文件中,并在那里查看它,但是没有
标记,因此很难读取,我希望在浏览器中看到干净的数组。所有代码都围绕这一点展开,因此这一点非常重要。

不确定什么是cloud9

对于调试,可以尝试使用var_dump()函数。它将打印到您的浏览器数据类型和数据值上,因为可能存在不同类型的“nothing”。这不是一种更好的调试方法,而是一种幼稚的方法。为了更好:在这个cloud9中检查调试和断点的可能性


var_dump()可以根据需要使用任意多的参数,因此也可以方便地使用php输入转储所有内容,以检查发生了什么以及它是如何变化的。

因此,您将原始输入写入文件,并分别对其进行json解码。因此,很可能您实际上没有得到有效的json

如果您确实传递了无效的json,
json\u decode
返回
NULL
,这就是为什么您在
var\u dump
时会看到这种情况-因此您必须调用
json\u last\u error
以确保它工作正常

从文档:

返回用json编码的适当PHP类型的值。值true、false和null分别作为true、false和null返回。如果无法解码json或编码数据深度超过递归限制,则返回NULL

您应该检查
json\u decode
是否有效,下面是一个示例:


任何调用此文件的操作都需要显示此文件返回的内容,可能是AJAX?对于
live
/
not live
。。。我们能称之为“环境”吗?i、 e.开发/分段/生产?当然,在本地主机上做任何事情与在网络上做任何事情都有一些不同。老实说,这可能与5.6前后的输入流更改有关。最后,同意西奥的观点,web套接字是当今实现这一点的正确方式。@ficuscr我认为live意味着它不是在刷新后看到它,而是希望立即看到它,而不是“我的项目上线”更多的是“直播电视”,你需要查找服务器端代码而不是客户端代码。实际上,PHP无法在没有请求/响应的情况下更新客户端。如果您想在不重新提交或刷新的情况下查看php信息,您需要查看JavaScript/jQuery对Ajax的支持。。。给人的印象是,你有一个在某一点上有效的东西。如果不是这样,那么您需要了解HTTP的基本请求/响应性质。然后在AJAX/comet/long poll上展开阅读,然后进入websockets。是的,我试过var_dump(),它只打印出/home/ubuntu/workspace/index.php:22:null我不认为这是数据类型的问题,我已经用php打印出了“非活动”数组
<?php
$badjson = '{bad:"json"}';
$decoded = json_decode($badjson);
if(json_last_error()!==JSON_ERROR_NONE){
    echo "Json Decode Failed: ".json_last_error_msg();
}else{
    var_dump($decoded);
}

echo "\n---\n";

$goodjson = '{"property":"value"}';
$decoded = json_decode($goodjson);
if(json_last_error()!==JSON_ERROR_NONE){
    echo "Json Decode Failed: ".json_last_error_msg();
}else{
    var_dump($decoded);
}