повторение среднего исполнения не отправляется получателю

$output = ob_get_contents();
ob_end_clean();
echo json_encode($data);
ob_start();
echo $output;

Этот код вызывается как API с другого сервера, и я хочу отправить данные json обратно на этот сервер, но я хочу сохранить $ output в буфере вывода, чтобы позже я мог записать его в файл. json_encode($data); не отправляется запрашивающему скрипту. Я пробовал много вариантов, используя flush() а также ob_flush но не сработало. Когда я добавлю die() сразу после json_encode($data); линия это работает, за исключением того, что я на самом деле не хочу этого die() в тот момент. Как я могу это исправить?

0

Решение

Как насчет:

Сохраните результат в переменной, отобразите переменную, зарегистрируйте переменную. Нет необходимости в буферизации вывода:

$output = json_encode($data);
echo $output;
log_to_whatever($output);

Если вам нужна буферизация вывода, то вы должны начать буферизацию до того, как вы сделаете эхо:

ob_start();
echo json_encode($data);
$output = ob_get_clean(); // Shorthand for get and clean
echo $output;
log_to_whatever($output);

Вместо очистки буфера вы можете фактически очистить буфер (= отправить его клиенту), но все равно получить его в переменную.

ob_start();
echo json_encode($data);
$output = ob_get_flush(); // Shorthand for get and flush
// echo $output; This is not needed anymore, because it is already flushed
log_to_whatever($output);

Но в любом случае кажется, что это громоздкие альтернативы простому первому решению, по крайней мере, в представленном вами сценарии.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]