Home »
Imported messages »
comp.lang.php »
Queuing at job from within php program?
Re: Queuing at job from within php program? [message #175669 is a reply to message #175668] |
Mon, 17 October 2011 16:47   |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 10/17/2011 11:51 AM, bobm3(at)worthless(dot)info wrote:
> On Mon, 17 Oct 2011 11:20:38 -0400, Jerry Stuckle wrote:
>
>> On 10/17/2011 9:24 AM, bobm3(at)worthless(dot)info wrote:
>>> Fellow php'ers;
>>>
>>> I'm having some difficulty getting this to work: Based on a date/time
>>> selected by a user on a web form I would like to use the "at" command
>>> to schedule that task.
>>>
>>> I've tried various php functions (system, exec, passthru) with the same
>>> results (return code 1 - which I cannot seem to get the error message
>>> from).
>>>
>>> Here is a sample code snippet:
>>>
>>> $cmd = "echo \"podcast -c $filename\" | at $hr:$mn $_ampm";
>>> passthru("$cmd", $Retcode);
>>> echo "$Retcode";
>>>
>>> returns 1
>>>
>>> Then I thought that perhaps the 'at' was not reading stdin in this case
>>> so I tried a temporary file approach:
>>>
>>> $cmd = "echo \"podcast -c $filename\"";
>>> file_put_contents($filename.tmp, $cmd); passthru("at $_hr:$_mn $_ampm<
>>> $filename.tmp", $_RetVal); echo "$_RetVal";
>>>
>>> This time it returned 2
>>>
>>> I've got to be misunderstanding this function. So, I thought if any of
>>> you skilled readers have had luck with doing something like this you
>>> may be willing to share. However, any other suggestions greatly
>>> appreciated.
>>>
>>> Thanks
>>
>>
>> What is actually in $cmd when you execute the passthru command?
>>
>> What happens when you type this exact output at a command line prompt?
>
> I've echoed out the contents of $cmd in my testing. It does contain
> exactly what is intended:
> echo "podcast -c abc123 | at 10:01 am"
>
> Also, the command I'm trying to execute works perfectly from the CLI with
> the same (appropriate) values.
>
> I'm thinking that there might be a permissions issue but I'm unable to
> obtain the error message from the passthru command.
>
> I suppose next I will try to create a small php script to emulate this
> from the CLI and perhaps them I will see the error (if any).
>
> Thanks
OK, when you enter that exactly from the CLI it works? Are you
executing it as root or another user?
Next: the home directory for the web server will be different than the
one from the CLI. Also, the web server will have different permissions.
Usually the web server user will not have permission to access the
atjobs directory (/var/spool/cron/atjobs on Debian).
Try su'ing (or sudo'ing) to the web server's id, change to the web
server's root directory and execute the command.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|
Goto Forum:
Current Time: Sun Apr 13 23:22:48 GMT 2025
Total time taken to generate the page: 0.08107 seconds