On 27-09-2012 11:31, lx wrote:
        I have a question now.the code is:

                 $ftemp = fopen("$fdoc_tmp/temp_proxy", 'w');
                 fwrite($ftemp, $content);

                 exec("/usr/local/bin/gdnsproxy -a -f $fdoc_tmp/temp_proxy
1>$fdoc_tmp/dout 2>$fdoc_tmp/derr", $data, $ex_result);
                 echo "ret=".$ex_result;

As you see, If a process run these,this is right.But two processes run this
the order maybe is:
1.process 1 create the temp_proxy1
2.process 2 create the temp_proxy2
3.process 1 exec temp_proxy2
4.process 2 exec temp_proxy2

The temp_proxy1 can't exec.

So,I want to know how to solve it.
Thank you.

Well, there are basically 2 ways:
1. introduce locking; you can lock the file and have the other script check if the file is locked. If so > have it usleep() and check again. 2. If you can run gdnsproxy in parallel, you could instead change the script to make $fdoc_tmp/temp_proxy unique for that script. So instead of just writing, you first check if the file exists, if so, create a file with a different (non-existent) name and then try again. Otherwise, use the first name. Then pass the 'unique' name to gdnsproxy.

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

Reply via email to