CGI and DestroyStack property

LiangTyan Fui mlist at afteroffice.com
Sat Apr 29 11:10:43 CDT 2006


On Apr 28, 2006, at 10:19 AM, Brian Yennie wrote:

>> It is rather crud to use PHP -> socket -> MC.
>> The MC socket port listening method is not robust enough, and may  
>> went deaf under some loads.
>
> I think Pierre would disagree. I would also - it's a whole lot more  
> likely to handle a big load than a CGI that loads the whole engine  
> with every request. There's nothing crud about it, it works quite  
> well.
>
>> You don't have to use PHP to handle the browser POST queries. We  
>> have pure MC CGI written to handle POST running for years without  
>> problem.
>>
>> Unless you need to MC running as daemon explicitly, I don't see  
>> the need of PHP here.
>
> That was the point of this thread... I think you missed the  
> requirements. The original poster already has a working CGI, but  
> wanted a daemon solution to easily solve read/write conflicts for  
> the stack.

Let me proposed a solution here, which works for us. We was trying to  
resolve a race condition on writing on a same file (not stack) by  
intensive CGI queries.

1. moved the files onto high I/O efficient RAM disk, or the shared  
memory at /dev/shm

2. implement a pseudo lock and unlock method, here is how:

# When you load stack, do this:
put false into stackOpenStatus
repeat 60 # retry for 1 minute
   if there is a stack myStackName then
     # try to rename it
     rename myStackName to (myStackName &".lock")
     if the result = "" then
       # manage to rename, no error, so the lock is on!
       open stack (myStackName &".lock")
       put true into stackOpenStatus
       exit repeat
     end if
   end if

   wait 1 second
end repeat
# remember to test the stackOpenStatus first before proceed.


# When you write stack, do this:
save stack (myStackName &".lock") # save to the lock one
rename (myStackName &".lock") to myStackName # make it available again

Hope this helps.

-- 




More information about the metacard mailing list