Re: Problem with EXEC and PASSTHRU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok - This is a reply to ALL - Thanks for the great help - I now understand 
why it wasn't displaying - it was all due to caching of data at the client 
end before displaying in blocks. With some help in the comments of the php 
manual for flush() I found a nice script that uses echo str_pad('',1024); to 
help pad things out - also displays a little countdown to keep people amused 
and convinced something is happening while the service restarts! I'm LOVING 
php now - its a very simple language limited only by your imagination as to 
how you use it! My knowledge seems to be lacking more in HTML and Browser 
server relationships - I'm basing things on my background in Basic 
programming as a kid - you do Print "Hello world" and it does that instantly 
to the screen - little different with browsers!

Matt

"Myron Turner" <mturner@xxxxxxxxxxxxxxx> wrote in message 
news:98.24.34241.5236F354@xxxxxxxxxxxxxxx
> Matt Beechey wrote:
>> I am writing a php website for users to edit a global whitelist for Spam
>> Assassin - all is going fairly well considering I hadn't ever used php 
>> until
>> a couple of days ago. My problem is I need to restart AMAVISD-NEW after 
>> the
>> user saves the changes. I've acheived this using SUDO and giving the
>> www-data users the rights to SUDO amavisd-new. My problem is simply a 
>> user
>> friendlyness issue - below is the code I'm running -
>>
>> if(isset($_POST["SAVE"]))
>> {
>> file_put_contents("/etc/spamassassin/whitelist.cf", 
>> $_SESSION[whitelist]);
>> $_SESSION[count]=0;
>> echo "Restarting the service.........</A></P>";
>> exec('sudo /usr/sbin/amavisd-new reload');
>> echo "Service was restarted...... Returning to the main page.";
>> sleep(4)
>> echo '<meta http-equiv="refresh" content="0;URL=index.php">';
>> }
>>
>> The problem is that the Restarting the Service dialogue doesn't get
>> displayed until AFTER the Service Restarts even though it appears before 
>> the
>> shell_exec command. I've tried exec and passthru and its always the 
>> same - I
>> want it to display the "Service was restarted" - wait for 4 seconds and 
>> then
>> redirect to the main page. Instead nothing happens on screen for the 
>> browser
>> user until the service has restarted at which point they are returned to
>> index.php - its as if the exec and the sleep and the refresh to index.php
>> are all kind of running concurently.
>>
>> Can someone PLEASE tell me what I'm doing wrong - or shed light on how I
>> should do this.
>>
>> Thanks,
>>
>> Matt
>
>
> -- 
> You have to keep in mind that you are dealing with the difference in speed 
> between something that is taking place on the sever and something that is 
> being transmitted over a network.  You don't make it clear whether this is 
> an in-house site or whether it is used by people at a distance.  If the 
> latter, what you describe is not surprising at all.
>
> I've never had a reason to look into how PHP sequences events when it 
> pumps out a web page, but it's not unusual for scripts in Perl, for 
> instance, to show delays in browser output when doing something on the 
> server.  One  consideration would be how long amavisd-new takes to reload.
>
> I'm not very well-informed about hacking and security, but it would seem 
> to me that you are taking a risk by giving users root privileges to 
> restart amavisd-new.
>
>
> _____________________
> Myron Turner
> http://www.mturner.org/XML_PullParser/ 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux