Hey -
Running these on a Linux server with PHP 5 and Python 2.5.
My problem is this: I have a simple php form that executes a long (~3 minutes) Python script using the 'exec' function from php. The issue is that the browser, I think, 'times out' before the Python script is finished and therefore kills Python and displays no output from Python. After some intense googling, I haven't found an answer, but I found a potential solution that I really want to avoid (manually opening a process that runs in the background, and checking its status until it is complete, then refreshing the web page). I'd much rather find an easier way to do this, and thus I am asking for help either way. If my only option is to open a job and monitor its status, could someone help guide me through coding this? I've tried naïvely doing exec("/path/to/executable arg1 arg2 >> /path/to/logfile 2>&1 &") but it seems as though even this dies when the browser times out. Thanks!
-Adrian
PHP running Python script - not waiting for Python script to
Moderator: General Moderators
Re: PHP running Python script - not waiting for Python script to
Have you tried just changing all of your server settings to stop it timing out? This includes apache's as well PHP's
Re: PHP running Python script - not waiting for Python script to
Hey -
Taken from the PHP manual:
If I throw random print statements in there, say like this:
It prints all of these numbers from the print statements, but doesn't execute the rest of the code - the stuff that I actually want it to do...any ideas?
Taken from the PHP manual:
Another strange thing - say my python code looks like this:Note: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.
Code: Select all
import sys
import os
thisPID = os.getpid()
print thisPID
RADeg = float(sys.argv[1])
decDeg = float(sys.argv[2])
clipSizeDeg = float(sys.argv[3])
ic.myFunction(RAdeg, decDeg, clipSizeDeg)
os.system(SOME LONG COMMAND)
for i in os.listdir(blah):
os.system("gunzip BLAH")Code: Select all
import sys
import os
thisPID = os.getpid()
print thisPID
print "1"
RADeg = float(sys.argv[1])
decDeg = float(sys.argv[2])
clipSizeDeg = float(sys.argv[3])
print "2"
ic.myFunction(RAdeg, decDeg, clipSizeDeg)
print "3"
os.system(SOME LONG COMMAND)
print "4"
for i in os.listdir(blah):
print i
os.system("gunzip BLAH")
Last edited by Benjamin on Tue Jun 09, 2009 11:44 am, edited 1 time in total.
Reason: Changed code type from text to python.
Reason: Changed code type from text to python.
Re: PHP running Python script - not waiting for Python script to
You could always do this on a Windows box as then the measured time is real