Is there a way to make PHP progressively output as the script executes?

佐手、 提交于 2019-11-28 01:18:52

问题


So I'm writing a disposable script for my own personal single use and I want to be able see how the process is going. Basically I'm processing a couple of thousand media releases and sending them to our new CMS.

So I don't hammer the CMS, I'm making the script sleep for a couple of seconds after every 5 requests.

I would like - as the script is executing - to be able to see my echos telling me the script is going to sleep or that the last transaction with the webservice was successful.

Is this possible in PHP?

Thanks for your help!

Iain


回答1:


Use ob_flush to send any data in the buffer. So you can execute some commands, flush the output, and then sleep for a bit before processing more commands.

I do notice that on particularly long scripts, PHP seems to start sending what it's got in the buffer even though the script hasn't finished executing

By default, PHP will never echo anything until the entire script finishes executing. That's just your browser trying to output way too much data at once, or you have something that's causing it to flush somewhere.




回答2:


You can try using flush and look at the other output control functions, but they might not be any use. Your web server software may buffer the response regardless.




回答3:


Here's a PHP package which wraps it up :

https://packagist.org/packages/coderofsalvation/browser-stream

   BrowserStream::enable();
    BrowserStream::put("loading");

    for( $i = 0; $i < 10; $i++ ){
        BrowserStream::put(".");
        sleep(1);
    }



回答4:


You may want to explore the flush commands http://php.net/manual/en/function.flush.php



来源:https://stackoverflow.com/questions/2513110/is-there-a-way-to-make-php-progressively-output-as-the-script-executes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!