有时不处理并发?

时间:2012-09-28 03:42:51

标签: php linux

我的代码是:

$b_data_proxy = $dn." ".$cv." ".$dom_name." ".$record_ttl." ".substr($now,0,strlen($now)-1).$more_ip_address;<br>
                        $b_ftemp = fopen("$fdoc_spool/temp_b", 'a+');<br>
                        fwrite($b_ftemp, $b_data_proxy."\n");<br>
                        fclose($b_ftemp);

如您所见,当一个用户访问该页面时,这是正确的。 但是有两个用户同时访问该页面。他们会写的 temp_b的同一文件。我不想使用不同的temp_b名称。

这可能是个问题,他们会在同一时间写同一个文件。 但$ b_data_proxy的大小小于4kB。 所以我想知道我是否应该处理并发? 因为大小不到4KB。

我的系统信息: Linux YF-2321 2.6.18-194.el5#1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU / Linux

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您担心他们同时写入同一个文件,那么只需使用每个用户独有的临时文件进行编写。然后删除主文件并将临时文件重命名为主文件的名称。移动文件的最后一个将永远赢。使用此方法,您的文件将不会处于损坏状态,并且您不必进入文件锁定/并发技术。

答案 1 :(得分:0)

使用memcache或使用数据库锁定文件。

if( file_not_locked )


    //create lock
    //open file 
    //do stuff
    //close file
    //free lock