Well, really you can't do that. A PHP request only takes interrupt input when it starts, from the GET, POST, COOKIE, and SESSION magic variables. It doesn't run as a daemon. A fresh Ajax call to the script starts a new instance of the script. Fortunately, PHP's engine is fast enough that the performance is still not that much of a problem unless you're grossly over-including code. The only way to have a "stay-resident" PHP daemon for Ajax callbacks would be to either (a) Use an Opcode cache, which is not really a stay-resident but would eliminate a lot of the repetitive initialization in the engine or (b) write a CLI PHP script that you load on the server as a daemon that listens on a port, essentially same way that apache or MySQL or postfix or any other daemon does. For the latter you may have to use an off-port. For what you're trying to do, I'd suggest just writing your script normally and letting the Zend engine take care of it for you. If you're really concerned about performance you can have two include conditions, one for a full page and one for an Ajax call, but you have to be very careful about how you structure your code then. An Opcode cache would be easier and more flexible. As for persistent data across requests, that's what sessions are for. On Sunday 05 November 2006 06:04, David Négrier wrote: > Hi All, > > Thanks a lot for your numerous answers. > I've learned a lot from all your suggestions. > Actually, combining all your answers, I'll come up with a solution. > To be more explicit on what I want to do, I want in fact to start a > script, I want that script to > display a page, and then, I want that script not to stop, but I want to > be able to access that script > back using AJAX calls from the web page. So my script is opening a > network connection after having displayed the > web page and is waiting for incoming calls. Although no solution given > here is fully satisfying (because I don't want > to launch antother script, I want to remain in the same) I still can > find a way to close my connection to the browser (using > a header specifying the connection length) and then go back to my script > using AJAX. > > Thanks a lot for the time you took to propose solutions. > Best regards, > David. > www.thecodingmachine.com > > Eric Butera a écrit : > > On 11/1/06, David Négrier <d.negrier@xxxxxxxxxxxxxxxxxxxx> wrote: > >> Hello there, > >> > >> I'm having a somewhat unusual question here, and I cannot find any way > >> to solve it. > >> > >> I have a PHP page that displays a message, and then, performs a very > >> long operation. Note that it displays the message first. > >> I do not intend to give some feedback to the user when the operation is > >> done. > >> > >> I've seen I can use ignore_user_abort() to prevent the user from > >> stopping the ongoing operation, but that solves only part of my problem. > >> Because as long as the page is not fully loaded, the mouse cursor in the > >> user's browser is showing a watch. > >> > >> So ideally, what I would like is to be able to close the connection from > >> the server-side, but without using the exit() function, so my script > >> keeps running afterwards. > >> > >> I know I could use a system() call to launch another process to do the > >> processing, but I would like to avoid doing that, because there are many > >> variables in the context that I cannot easily pass in parameter. > >> > >> I also tried to use the register_shutdown_function() to perform my > >> operation after the page is displayed but since PHP 4.1.0, the > >> connection is closed after the function is called.... > >> > >> Would any of you have an idea on how I could close that connection? > >> > >> Thanks a lot, > >> David > >> www.thecodingmachine.com > >> > >> -- > >> PHP General Mailing List (http://www.php.net/) > >> To unsubscribe, visit: http://www.php.net/unsub.php > > > > If you haven't gone with any of the listed methods yet you could use > > fsockopen with a timeout value to accomplish your goal. > > > > frontend.php: > > <?php > > $fp = fsockopen("localhost", 80); > > fwrite($fp, "GET /long_processing_script.php HTTP/1.0\r\n\r\n"); > > stream_set_timeout($fp, 1); > > echo "done!"; > > ?> > > > > long_processing_script.php: > > <?php > > ignore_user_abort(); > > set_time_limit(0); > > // do stuff here > > ?> -- Larry Garfield AIM: LOLG42 larry@xxxxxxxxxxxxxxxx ICQ: 6817012 "If nature has made any one thing less susceptible than all others of exclusive property, it is the action of the thinking power called an idea, which an individual may exclusively possess as long as he keeps it to himself; but the moment it is divulged, it forces itself into the possession of every one, and the receiver cannot dispossess himself of it." -- Thomas Jefferson -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php