Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 627
  • Last Modified:

Close the php socket

I have php script that when invoked by the user may take minutes to run, and upon completion will upload a file to a server. However, i would prefer to not lockup the users browser connection after they press submit.

So, is there anyway to close the socket between apache and and the remote user but keep my script executing?

Jon Hess
0
theravada_maha
Asked:
theravada_maha
  • 2
1 Solution
 
curriCommented:
You can use system/exec to execute another program (which may be another php script). You can make programs execute on the background, so with a little script magic you can make it work. Also, if you redirect the output to another file, exec would NOT wait for the program to finish before returning. So you can do something like this:

- Write the rest of the process (ending with the upload :) into another php script (you can pass it info with parameters or something)

and then use a line like this in your main script:
exec("php rest_of_task.php > deleteme.txt");

Of course the problem is then that you have no way of sending any output/error messages from this process to the web browser (but you can send e-mails or something)

Orlando

0
 
curriCommented:
Also check this other question:
http://www.experts-exchange.com/jsp/qShow.jsp?ta=php&qid=20149480

They talk about the same thing in a different context (and their explanations probably do more sense than my previous comment :)
0
 
us111Commented:
install php as cgi-bin, write your php script

exec("myscript.php&");
or exec ("myscript.php >/dev/null");
or if it doesn't work exec("myscript.php > /dev/null &");
0
 
MoondancerCommented:
It's time to clean up this topic area and that means taking care of this question. Your options at this point are:

1. Award points to the Expert who provided an answer, or who helped you most. Do this by clicking on the "Accept Comment as Answer" button that lies above and to the right of the appropriate expert's name.

2. PAQ the question because the information might be useful to others, but was not useful to you. To use this option, you must state why the question is no longer useful to you, and the experts need to let me know if they feel that you're being unfair.

3.  Ask Community Support to help split points between participating experts.  Just comment here with details.

4.  Delete the question because it is of no value to you or to anyone else.  To use this option, you must state why the question is no longer useful to you, and the experts need to let me know if they feel that you're being unfair.

If you elect for option 2, 3 or 4, just post comment with details here and I'll take it from there.  We also request that you review any other open questions you might have and update/close them.  Display all your question history from your Member Profile to view details.

PLEASE DO NOT AWARD THE POINTS TO ME.

____________________________________________



Hi Experts:

In the event that the Asker does not respond, I would very much appreciate your opinions as to which Expert ought to receive points (if any) as a result of this question.  Likewise, you can also suggest that I PAQ or delete the question.

Experts, please do not add further "answer" information to this question.  I will be back in about one week to finalize this question.

Thank you everyone.

Moondancer :)
Community Support Moderator @ Experts Exchange

P.S.  REGARDING POINTS, Guidelines and more:  http://www.experts-exchange.com/jsp/cmtyHelpDesk.jsp  
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now