PHP умри внезапно останавливается, чтобы показать строку - PullRequest
0 голосов
/ 31 мая 2018

Я нуб с php.Уже более 1 года я использую скрипт в php для связи с Arduino.

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.php и gate.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. Если я хочу получить «ответ (« ОК »);»с gate.php Я ничего не получаю, также в Chrome я ничего не вижу 2. Если я хочу получить «response (get_settings ());»из gate.php я действительно получаю информацию, и Chrome показывает ее.3. Если я изменю эту строку «response (get_settings ());», на «response ('OK');"или "ответ (" ОК ");"Я ничего не получаю, также в Chrome я ничего не вижу

Что вы думаете об этом?Почему функция, возвращающая строку, работает, а строка - нет.Почему он работал месяцами, а вдруг - нет?

Я проверил это в своем "плане бесплатного хостинга" и с помощью usbWebserver.

Большое спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

я сделал эту проверку:

die('<' . $str . '>');   ----> doesn't work
die('#' . $str . '>');   ----> works !!!
die('#' . $str . '<');   ----> works !!!
die('>' . $str . '<');   ----> works !!!

Так что ему не нравится «<» в начале.</p>

Почему?А также, почему это произошло на этой неделе?

ПРИМЕЧАНИЕ: я мог бы изменить эти внешние символы, но я хочу понять реальную причину проблемы

Привет, кто-нибудь знает ???

0 голосов
/ 31 мая 2018

Что касается строки в круглых скобках die() и ее эквивалента exit(), в руководстве по PHP указано:

Если status (т.е. в вашем случае строка) является целым числом,это значение будет использоваться в качестве состояния выхода и не будет напечатано.Статусы выхода должны быть в диапазоне от 0 до 254, статус выхода 255 зарезервирован PHP и не должен использоваться.Статус 0 используется для успешного завершения программы.

и

Значение не возвращается.

Так что вы можете просто использовать echo, чтобы получить видимый вывод, и после этого используйте die()

...