json_decode возвращает ПУСТОЙ УКАЗАТЕЛЬ после вызова веб-сервиса

Вы имеете в виду размер хранилища таблицы, а не память?

Во-первых, некоторые общие вещи, которые вы должны проверить, чтобы определить проблему:

Установите для log_autovacuum_min_duration значение, отличное от -1, и посмотрите если сообщения генерируются.

Следите за автовакуумными процессами в pg_stat_activity. Есть ли какие-нибудь проблемы с таблицей проблем?

Изучите выходные данные

SELECT * FROM pg_stat_user_tables
WHERE relname = 'prablemtable';

Что такое n_live_tup и n_dead_tup? Что такое autovacuum_count и last_autovacuum?

Я подозреваю, что автовакуум работает, но не может выполнять свою работу, потому что одна из этих трех вещей препятствует его очистке : [1120 ]

57
задан SomeKittens 21 September 2012 в 23:38
поделиться

6 ответов

Править: Просто сделал некоторый быстрый контроль строки, обеспеченной OP. Небольшой "символ" перед изогнутой фигурной скобкой является UTF-8 B (yte) O (rder) M (ковчег) 0xEF 0xBB 0xBF. Я не знаю, почему эта последовательность байта отображена как  здесь.

По существу система Вы aquire данные из отправляет закодированный в UTF-8 BOM, предшествующим данным. Необходимо удалить первые три байта из строки перед броском ее в json_decode() (a substr($string, 3) сделает).

string(62) "{"action":"set","user":"123123123123","status":"OK"}"
            ^
            |
            This is the UTF-8 BOM

Как обнаруженный Kuroki Kaze, этот символ, конечно, является причиной почему json_decode сбои. Строка в ее данной форме не является правильно форматированной структурой JSON (см. RFC 4627),

64
ответ дан Community 24 November 2019 в 19:11
поделиться
"{"action":"set","user":"123123123123","status":"OK"}"

Этот небольшой апостроф в начале - что это? Первый символ после doublequote.

5
ответ дан Kuroki Kaze 24 November 2019 в 19:11
поделиться

Попробуйте это

$foo = utf8_encode($foo);
$data = json_decode($foo, true);
19
ответ дан Ólafur Waage 24 November 2019 в 19:11
поделиться

Что ж, у меня была похожая проблема, и проблема заключалась в волшебных кавычках PHP на сервере ... вот мое решение:

if(get_magic_quotes_gpc()){
  $param = stripslashes($_POST['param']);
}else{
  $param = $_POST['param'];
}
$param = json_decode($param,true);
75
ответ дан 24 November 2019 в 19:11
поделиться

Выведите последнюю ошибку json при отладке.

json_decode( $so, true, 9 );
$json_errors = array(
 JSON_ERROR_NONE => 'Ошибка не произошла',
 JSON_ERROR_DEPTH => 'Превышена максимальная глубина стека',
 JSON_ERROR_CTRL_CHAR => 'Ошибка управляющего символа, возможно, неправильно закодированного',
 JSON_ERROR_SYNTAX => 'Ошибка синтаксиса',
);
 echo 'Последняя ошибка : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
Также используйте функцию json.stringify() для двойной проверки синтаксиса JSON.

33
ответ дан 24 November 2019 в 19:11
поделиться

У меня был аналогичная проблема, заставила его работать после добавления '' (одинарные кавычки) вокруг строки json_encode. Следуя моему js файлу:

var myJsVar  = <?php echo json_encode($var); ?> ;    -------> NOT WORKING  
var myJsVar = '<?php echo json_encode($var); ?>' ;    -------> WORKING

просто подумал о том, чтобы опубликовать его на случай, если кто-то наткнется на этот пост, как я :)

-4
ответ дан 24 November 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: