簡體   English   中英

沒有將執行中的回聲發送給接收者

[英]echoing mid execution is not being sent to the recipient

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

該代碼被稱為另一台服務器的API,我想將json數據發送回該服務器,但我想將$ output保留在輸出緩沖區中,以便稍后將其記錄到文件中。 json_encode($data); 沒有發送到請求腳本。 我已經嘗試使用flush()ob_flush許多變體,但沒有奏效。 當我在json_encode($data);之后立即添加die() json_encode($data); 行它的工作原理,但那一刻我實際上並不希望它die() 我怎樣才能解決這個問題?

關於什么:

將結果存儲在變量中,回顯該變量,記錄該變量。 無需輸出緩沖:

$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);

但是,無論哪種情況,至少在您介紹的場景中,似乎都是簡單的第一種解決方案的繁瑣替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM