A way of commencing a script via php

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
DrPL
Forum Commoner
Posts: 26
Joined: Wed Oct 07, 2009 4:22 pm

A way of commencing a script via php

Post by DrPL »

Hi,
I'm trying to write a script that I can run from my website, which, when the "start" button is pressed, will run another (perl) script autonomously and continuously. I have read about using the php exec command to start another program, and then diverting the output of that program to a file to allow it to return immediately. I am testing it so that the perl script should send out an email every 10 minutes but it doesn't want to work. Can anyone see what is wrong?

This is the "control" page

Code: Select all

<html>
<body>
 
<form name="start" action="instigate.php" method="POST">
<input type="submit" value="Start" />
</form>
 
<form name="stop" action="rescind.php" method="POST">
<input type="submit" value="Stop" />
</form> 
 
</body>
</html>
This starts the exec routine

Code: Select all

 
<?php
 
if (file_exists("lock.txt")) 
{ 
unlink("lock.txt");
}
 
execInBackground( mail.pl );
 
function execInBackground($cmd) 
{
        exec("/home/p/a/paullee_com/tests/" . $cmd . " > /dev/null &");  
 
}
?> 
 
This stops the routine by creating a lock file

Code: Select all

 
<?php
 
$ourFileName = "lock.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);
 
?>
 
(and this is the perl file)

Code: Select all

 
#!/usr/bin/perl
 
$outfile = "lock.txt";
 
do
{
 
my $sendmail = "/usr/bin/sendmail"; 
open(MAIL, "|$sendmail -oi -t");
print MAIL "From: zak\@zen.com\n";
print MAIL "To: paul\@paullee.com\n";
print MAIL "Subject: $test\n\n";
print MAIL "$Just testing\n";
close(MAIL)
 
sleep(600);
 
}while(!(-e $outfile));
 
 
Thanks for your help

Paul
Post Reply