How do I close a connection early?

前端 未结 19 1708
情书的邮戳
情书的邮戳 2020-11-22 04:24

I\'m attempting to do an AJAX call (via JQuery) that will initiate a fairly long process. I\'d like the script to simply send a response indicating that the process has star

19条回答
  •  [愿得一人]
    2020-11-22 05:01

    The following PHP manual page (incl. user-notes) suggests multiple instructions on how to close the TCP connection to the browser without ending the PHP script:

    • Connection handling Docs

    Supposedly it requires a bit more than sending a close header.


    OP then confirms: yup, this did the trick: pointing to user-note #71172 (Nov 2006) copied here:

    Closing the users browser connection whilst keeping your php script running has been an issue since [PHP] 4.1, when the behaviour of register_shutdown_function() was modified so that it would not automatically close the users connection.

    sts at mail dot xubion dot hu Posted the original solution:

    
    

    Which works fine until you substitute phpinfo() for echo('text I want user to see'); in which case the headers are never sent!

    The solution is to explicitly turn off output buffering and clear the buffer prior to sending your header information. Example:

    
    

    Just spent 3 hours trying to figure this one out, hope it helps someone :)

    Tested in:

    • IE 7.5730.11
    • Mozilla Firefox 1.81

    Later on in July 2010 in a related answer Arctic Fire then linked two further user-notes that were-follow-ups to the one above:

    • Connection Handling user-note #89177 (Feb 2009)
    • Connection Handling user-note #93441 (Sep 2009)

提交回复
热议问题