Skip to content
Advertisement

PHP AJAX echo json data before then sleep

I have tried out couple answers here but none worked.

I have this basic honeypot script:

  if (!empty($_POST['starttime'])) {

        $current_time = time();
        $json = array();
        $json = reGenerateFormFields();//hold the hashed keys arays for change in the key output.

        if (($current_time - htmlentities(@$_POST['starttime'])) < 4) { // 3 is number of seconds differential
                        $return = array('hp' => true,'message' =>'אנא המתן 3 שניות בין שליחה','key' => $json['2'], 'nonce' => $json['1'],'time' => time());
              echo json_encode($return);
            sleep(7);
            die();
            
        }
}

I am trying to echo the json message and then sleep. But now it is first do sleep then echo the message. Any idea how to do it the good way?

Advertisement

Answer

Most likely the echo’d data is just being buffered rather than sent until sleep finishes and the request completes. Try using flush() to force pushing the output to the client:

echo json_encode($return);
flush();
sleep(7);
die();

If this fails, you may find padding the output will help meet the server/browser’s minimum length requirement to flush/display the data:

echo str_pad(json_encode($return),8192," ");
flush();
sleep(7);
die();
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement