PHP running Python script - not waiting for Python script to

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
apw235
Forum Newbie
Posts: 2
Joined: Mon Jun 08, 2009 7:01 pm

PHP running Python script - not waiting for Python script to

Post by apw235 »

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
User avatar
mikemike
Forum Contributor
Posts: 355
Joined: Sun May 24, 2009 5:37 pm
Location: Chester, UK

Re: PHP running Python script - not waiting for Python script to

Post by mikemike »

Have you tried just changing all of your server settings to stop it timing out? This includes apache's as well PHP's
apw235
Forum Newbie
Posts: 2
Joined: Mon Jun 08, 2009 7:01 pm

Re: PHP running Python script - not waiting for Python script to

Post by apw235 »

Hey -

Taken from the PHP manual:
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.
Another strange thing - say my python code looks like this:

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")
If I throw random print statements in there, say like this:

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")
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?
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.
User avatar
mikemike
Forum Contributor
Posts: 355
Joined: Sun May 24, 2009 5:37 pm
Location: Chester, UK

Re: PHP running Python script - not waiting for Python script to

Post by mikemike »

You could always do this on a Windows box as then the measured time is real
Post Reply