首页 > 解决方案 > PHP死突然停止显示字符串

问题描述

我是php的菜鸟。我已经使用 php 中的脚本与 arduino 通信超过 1 年了。

Arduino 将数据发送到我的 php 脚本,它会回答 arduino 可以读取的文本,以了解数据是否已正确保存。还有一种方法可以获取 arduino 从我的 mysql 数据库启动时需要的一些设置。

我一直在回复我的 arduino 答案的方式是使用“DIE”功能。

我有这个 php 文件(伪代码):

function.php(几个函数)

function response($str) {
    die('<' . $str . '>');  //< and > is to let arduino knows exactly the answer
}   

function get_settings() {
    $response = "";
    // ...... so response is completed
    return $response;
}

index.php(这个文件包括一个“require_once”,用于function.phpgate.php,以及其他功能。它是主文件)

gate.php(从 arduino 接收数据并需要发送答案的脚本文件)

//it gets data from $_GET and saves it into a mysql database
//After that:
if ($result) {                      
    response('OK');                     
} else {
    response('BAD_VALUES');
}
//And with other params in the $_GET, it does:
if ($_GET['k'] === ARDUINO_KEY) {
    response(get_settings());
} else {
    response('BAD KEY');
}

本周以来的问题是:1.如果我想得到“response('OK');” 从gate.php我没有得到任何东西,在 Chrome 中我也看不到任何东西 2. 如果我想得到“response(get_settings());” 从 gate.php 我确实得到了信息,Chrome 正在显示它。3. 如果我将这一行“response(get_settings());”更改为“response('OK');” 或“响应(“OK”);” 我什么都没有,在 Chrome 中我什么也看不到

你怎么看待这件事?为什么返回字符串的函数有效,而字符串无效。为什么它工作了几个月,突然就不行了?

我已经在我的“免费主机计划”和 usbWebserver 中检查了它。

非常感谢你的帮助。

标签: phpdie

解决方案


关于括号中的字符串die()及其等价物exit(),PHP手册指出:

如果status(即在您的情况下为字符串)是整数,则该值将用作退出状态而不打印。退出状态应在 0 到 254 的范围内,退出状态 255 由 PHP 保留,不得使用。状态 0 用于成功终止程序。

不返回任何值。

所以你可以使用echo来获得可见的输出,然后使用die()


推荐阅读