Я недавно перенес приложение из MySQL в сервис Amazon Aurora MySQL. Мое приложение извлекает данные из этой базы данных и использует их для поиска в одном из индексов Elasticsearch.
Базовый HTTP-клиент библиотеки PHP Elasticsearch кодирует данные запроса в JSON перед отправкой на сервер Elasticsearch. Я обнаружил, что иногда вызов json_encode
завершается неудачно и возвращает false при передаче данных, извлеченных из базы данных. Это происходит через случайные интервалы, поэтому я не мог найти точную причину.
Мои выводы приведены ниже:
json_encode
завершается ошибкой, когда эти данные передаются ему.Снимок экрана ответа базы данных
Кто-нибудь здесь сталкивался с подобной проблемой с базой данных Aurora или MySQL, или это просто проблема самого PHP?
Никогда не предполагайте, что когда-либо использовать php и mysql... 8/10 то, что вы думаете, не проблема... это проблема...
Итак, попробуйте это:
function array_utf8_encode($dat){
if (is_string($dat))
return utf8_encode($dat);
if (!is_array($dat))
return $dat;
$ret = array();
foreach ($dat as $i => $d)
$ret[$i] = self::array_utf8_encode($d);
return $ret;
}
$my_db_arr = array_utf8_encode($my_db_arr);
// Now let encode
$json = json_encode($my_db_arr);
var_dump(json_last_error_msg());
Хорошего дня,
Антонио